BString: Add IStartsWith() and IEndsWith() methods

Case-insensitive version of StartsWith() and EndsWith()
This commit is contained in:
John Scipione
2017-02-21 18:03:03 -08:00
parent 85566e032d
commit 388ac82baa
2 changed files with 57 additions and 0 deletions
+8
View File
@@ -243,10 +243,18 @@ public:
bool StartsWith(const char* string) const; bool StartsWith(const char* string) const;
bool StartsWith(const char* string, int32 length) const; bool StartsWith(const char* string, int32 length) const;
bool IStartsWith(const BString& string) const;
bool IStartsWith(const char* string) const;
bool IStartsWith(const char* string, int32 length) const;
bool EndsWith(const BString& string) const; bool EndsWith(const BString& string) const;
bool EndsWith(const char* string) const; bool EndsWith(const char* string) const;
bool EndsWith(const char* string, int32 length) const; bool EndsWith(const char* string, int32 length) const;
bool IEndsWith(const BString& string) const;
bool IEndsWith(const char* string) const;
bool IEndsWith(const char* string, int32 length) const;
// Replacing // Replacing
BString& ReplaceFirst(char replaceThis, char withThis); BString& ReplaceFirst(char replaceThis, char withThis);
BString& ReplaceLast(char replaceThis, char withThis); BString& ReplaceLast(char replaceThis, char withThis);
+49
View File
@@ -1412,6 +1412,30 @@ BString::StartsWith(const char* string, int32 length) const
} }
bool
BString::IStartsWith(const BString& string) const
{
return IStartsWith(string.String(), string.Length());
}
bool
BString::IStartsWith(const char* string) const
{
return IStartsWith(string, strlen(string));
}
bool
BString::IStartsWith(const char* string, int32 length) const
{
if (length > Length() || length > (int32)strlen(string))
return false;
return _IFindAfter(string, 0, length) == 0;
}
bool bool
BString::EndsWith(const BString& string) const BString::EndsWith(const BString& string) const
{ {
@@ -1437,6 +1461,31 @@ BString::EndsWith(const char* string, int32 length) const
} }
bool
BString::IEndsWith(const BString& string) const
{
return IEndsWith(string.String(), string.Length());
}
bool
BString::IEndsWith(const char* string) const
{
return IEndsWith(string, strlen(string));
}
bool
BString::IEndsWith(const char* string, int32 length) const
{
int32 offset = Length() - length;
if (offset < 0)
return false;
return _IFindBefore(string, Length(), length) == offset;
}
// #pragma mark - Replacing // #pragma mark - Replacing