mirror of
https://github.com/theoludwig/libcproject.git
synced 2024-12-11 21:13:00 +01:00
feat: add string_last_position_of
This commit is contained in:
parent
ec6e748d24
commit
1e0bf99ef6
12
lib/string.c
12
lib/string.c
@ -395,3 +395,15 @@ size_t string_position_of(const string_t string, const char character) {
|
|||||||
}
|
}
|
||||||
return position_found;
|
return position_found;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
size_t string_last_position_of(const string_t string, const char character) {
|
||||||
|
size_t position_found = 0;
|
||||||
|
size_t string_length = string_get_length(string);
|
||||||
|
while (string_length > 0 && position_found == 0) {
|
||||||
|
if (string[string_length - 1] == character) {
|
||||||
|
position_found = string_length;
|
||||||
|
}
|
||||||
|
string_length--;
|
||||||
|
}
|
||||||
|
return position_found;
|
||||||
|
}
|
||||||
|
13
lib/string.h
13
lib/string.h
@ -270,9 +270,20 @@ bool string_ends_with(const string_t string, const string_t prefix);
|
|||||||
* @param string
|
* @param string
|
||||||
* @param substring
|
* @param substring
|
||||||
* @return size_t
|
* @return size_t
|
||||||
* @example string_position_of("hello world", "e") // 2
|
* @example string_position_of("hello world", 'e') // 2
|
||||||
* @since v4.2.0
|
* @since v4.2.0
|
||||||
*/
|
*/
|
||||||
size_t string_position_of(const string_t string, const char character);
|
size_t string_position_of(const string_t string, const char character);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Returns the position (index + 1) within the string of the last occurrence of the specified substring (0 if not found).
|
||||||
|
*
|
||||||
|
* @param string
|
||||||
|
* @param character
|
||||||
|
* @return size_t
|
||||||
|
* @example string_last_position_of("hello world", 'o') // 8
|
||||||
|
* @since v4.2.0
|
||||||
|
*/
|
||||||
|
size_t string_last_position_of(const string_t string, const char character);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -26,6 +26,7 @@ void string_test() {
|
|||||||
string_starts_with_test();
|
string_starts_with_test();
|
||||||
string_ends_with_test();
|
string_ends_with_test();
|
||||||
string_position_of_test();
|
string_position_of_test();
|
||||||
|
string_last_position_of_test();
|
||||||
}
|
}
|
||||||
|
|
||||||
void string_get_length_test() {
|
void string_get_length_test() {
|
||||||
@ -281,6 +282,7 @@ void string_ends_with_test() {
|
|||||||
|
|
||||||
void string_position_of_test() {
|
void string_position_of_test() {
|
||||||
assert(string_position_of("hello world", 'e') == 2);
|
assert(string_position_of("hello world", 'e') == 2);
|
||||||
|
assert(string_position_of("hello world", 'o') == 5);
|
||||||
assert(string_position_of("abcdef", 'a') == 1);
|
assert(string_position_of("abcdef", 'a') == 1);
|
||||||
assert(string_position_of("abcdef", 'b') == 2);
|
assert(string_position_of("abcdef", 'b') == 2);
|
||||||
assert(string_position_of("abcdef", 'c') == 3);
|
assert(string_position_of("abcdef", 'c') == 3);
|
||||||
@ -289,3 +291,15 @@ void string_position_of_test() {
|
|||||||
assert(string_position_of("abcdef", 'f') == 6);
|
assert(string_position_of("abcdef", 'f') == 6);
|
||||||
assert(string_position_of("abcdef", 'g') == 0);
|
assert(string_position_of("abcdef", 'g') == 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void string_last_position_of_test() {
|
||||||
|
assert(string_last_position_of("hello world", 'e') == 2);
|
||||||
|
assert(string_last_position_of("hello world", 'o') == 8);
|
||||||
|
assert(string_last_position_of("abcdef", 'a') == 1);
|
||||||
|
assert(string_last_position_of("abcdef", 'b') == 2);
|
||||||
|
assert(string_last_position_of("abcdef", 'c') == 3);
|
||||||
|
assert(string_last_position_of("abcdef", 'd') == 4);
|
||||||
|
assert(string_last_position_of("abcdef", 'e') == 5);
|
||||||
|
assert(string_last_position_of("abcdef", 'f') == 6);
|
||||||
|
assert(string_last_position_of("abcdef", 'g') == 0);
|
||||||
|
}
|
||||||
|
@ -60,4 +60,6 @@ void string_ends_with_test();
|
|||||||
|
|
||||||
void string_position_of_test();
|
void string_position_of_test();
|
||||||
|
|
||||||
|
void string_last_position_of_test();
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
Reference in New Issue
Block a user