Add contains_char() for single-character 'contains' calls.

This commit is contained in:
Lukas Tenbrink
2024-12-05 17:56:08 +01:00
parent eb5103093c
commit b5c31ebb41
61 changed files with 108 additions and 99 deletions

View File

@@ -3314,6 +3314,10 @@ int String::find(const String &p_str, int p_from) const {
return -1; // won't find anything!
}
if (src_len == 1) {
return find_char(p_str[0], p_from); // Optimize with single-char find.
}
const char32_t *src = get_data();
const char32_t *str = p_str.get_data();
@@ -3354,6 +3358,10 @@ int String::find(const char *p_str, int p_from) const {
return -1; // won't find anything!
}
if (src_len == 1) {
return find_char(*p_str, p_from); // Optimize with single-char find.
}
const char32_t *src = get_data();
if (src_len == 1) {
@@ -4081,7 +4089,7 @@ String String::format(const Variant &values, const String &placeholder) const {
Variant v_val = values_arr[i];
String val = v_val;
if (placeholder.contains("_")) {
if (placeholder.contains_char('_')) {
new_string = new_string.replace(placeholder.replace("_", i_as_str), val);
} else {
new_string = new_string.replace_first(placeholder, val);

View File

@@ -432,6 +432,7 @@ public:
_FORCE_INLINE_ bool is_empty() const { return length() == 0; }
_FORCE_INLINE_ bool contains(const char *p_str) const { return find(p_str) != -1; }
_FORCE_INLINE_ bool contains(const String &p_str) const { return find(p_str) != -1; }
_FORCE_INLINE_ bool contains_char(char32_t p_chr) const { return find_char(p_chr) != -1; }
_FORCE_INLINE_ bool containsn(const char *p_str) const { return findn(p_str) != -1; }
_FORCE_INLINE_ bool containsn(const String &p_str) const { return findn(p_str) != -1; }