2#ifndef _aspose_system_string_h_
3#define _aspose_system_string_h_
5#include <system/text/normalization_form.h>
6#include <system/string_comparison.h>
7#include <system/shared_ptr.h>
8#include <system/details/icu_namespace.h>
9#include <system/details/stack_array.h>
10#include <system/object.h>
16#include <system/diagnostics/debug.h>
22#ifdef ASPOSECPPLIB_BEING_BUILT
23#include <unicode/unistr.h>
26ASPOSECPP_3RD_PARTY_ICU_NAMESPACE_START {
28 ASPOSECPP_3RD_PARTY_CLASS(UnicodeString);
32ASPOSECPP_3RD_PARTY_TYPEDEF(UChar,
char16_t);
34namespace System {
namespace Text {
class StringBuilder; } }
35namespace System {
namespace Text {
namespace RegularExpressions {
class Regex; } } }
36namespace System {
namespace Text {
namespace RegularExpressions {
namespace Detail {
class Formatter; } } } }
37namespace System {
namespace Globalization {
class CompareInfo; } }
38namespace System {
namespace Globalization {
class TextElementEnumerator; } }
39namespace System {
namespace Globalization {
class TextInfo; } }
40namespace System {
namespace Collections {
namespace Generic {
template <
typename T>
class IEnumerable; } } }
42namespace System {
namespace Details {
template<
typename T>
class ArrayView; } }
49 ASPOSECPP_3RD_PARTY_TYPE_HOLDER(codeporting_icu::UnicodeString, UnicodeString, 64,
size_t, UnicodeStringHolder);
61using codeporting_icu::UnicodeString;
66template <
typename T,
typename CharT>
68 :
public std::integral_constant<bool, std::is_same<typename std::remove_const<typename std::remove_pointer<typename std::decay<T>::type>::type>::type, CharT>::value> {};
73template <
typename T,
typename CharT>
75 public std::integral_constant<bool, IsStringByteSequence<T, CharT>::value && std::is_pointer<T>::value> {};
80template <
typename T,
typename CharT>
82 public std::integral_constant<bool, IsStringByteSequence<T, CharT>::value && std::is_array<T>::value> {};
123 static const uintptr_t state_literal = 0;
124 static const uintptr_t state_null = 1;
130 friend class System::Text::RegularExpressions::Detail::Formatter;
147 :
String(value, std::extent<T>::value - 1, state_literal)
156 m_state = state_literal;
163 :
String(value, std::extent<T>::value - 1)
165 m_state = state_literal;
174 m_state = state_literal;
180 ASPOSECPP_SHARED_API
String(
const char16_t* str,
int length);
185 ASPOSECPP_SHARED_API
String(
const char* str,
int length);
191 ASPOSECPP_SHARED_API
String(
const char16_t* str,
int start,
int length);
196 ASPOSECPP_SHARED_API
explicit String(
const char16_t ch,
int count);
203 typename std::enable_if<std::is_same<T, std::nullptr_t>::value>::type* =
nullptr)
206 ASPOSE_UNUSED(value);
214 :
String(value, std::extent<T>::value - 1)
229 ASPOSECPP_SHARED_API
explicit String(
const wchar_t* str,
int length);
234 ASPOSECPP_SHARED_API
explicit String(
const wchar_t ch,
int count = 1);
257 ASPOSECPP_SHARED_API
const UChar*
u_str()
const;
261 ASPOSECPP_SHARED_API
const UChar*
begin()
const;
264 ASPOSECPP_SHARED_API
const UChar*
end()
const;
280 inline bool IsNull()
const {
return m_state == state_null; }
291 ASPOSECPP_SHARED_API std::wstring
ToWCS()
const;
294 ASPOSECPP_SHARED_API std::u16string
ToU16Str()
const;
297 ASPOSECPP_SHARED_API std::u32string
ToU32Str()
const;
337 template <typename T, std::enable_if_t<IsStringLiteral<T, char_t>::value>* =
nullptr>
340 return *
this +
String(arg, std::extent<T>::value - 1);
367 template <typename T, std::enable_if_t<IsSmartPtr<T>::value>* =
nullptr>
370 return value ==
nullptr ? *this : *
this + value->
ToString();
376 template <typename T, std::enable_if_t<!IsSmartPtr<T>::value && !std::is_scalar<T>::value && !std::is_array<T>::value>* =
nullptr>
385 template <typename T, std::enable_if_t<std::is_same<T, bool>::value>* =
nullptr>
388 return String(*this).AddBoolImpl(arg);
435 template <typename T, std::enable_if_t<std::is_same<T, bool>::value>* =
nullptr>
438 return AddBoolImpl(value);
465 explicit operator std::string()
const
467 return ToUtf8String();
471 explicit operator std::wstring()
const
477 explicit operator std::u16string()
const
483 explicit operator std::u32string()
const
525 ASPOSECPP_SHARED_API
void CopyTo(
int sourceIndex,
const ArrayPtr<char_t>& destination,
int destinationIndex,
int count)
const;
615 ASPOSECPP_SHARED_API
String Remove(int32_t startIndex, int32_t count = INT32_MAX)
const;
636 ASPOSECPP_SHARED_API
int IndexOf(char_t c,
int startIndex = 0)
const;
642 ASPOSECPP_SHARED_API
int IndexOf(char_t c,
int startIndex,
int count)
const;
647 ASPOSECPP_SHARED_API
int IndexOf(
const String& str,
int startIndex = 0)
const;
666 ASPOSECPP_SHARED_API
int IndexOf(
const String& str,
int startIndex,
int count)
const;
672 ASPOSECPP_SHARED_API
int IndexOfAny(char_t c,
int startIndex = 0)
const;
729 ASPOSECPP_SHARED_API
int LastIndexOf(char_t value, int32_t startIndex)
const;
735 ASPOSECPP_SHARED_API
int LastIndexOf(char_t value, int32_t startIndex, int32_t count)
const;
823 ASPOSECPP_SHARED_API
String Replace(char_t oldValue, char_t newValue)
const;
927 int length,
bool ignoreCase =
false);
939 int length,
bool ignoreCase,
1002 static ASPOSECPP_SHARED_API
String Join(
const String& separator,
const System::Details::ArrayView<String>& parts,
int startIndex = 0,
int count = -1);
1050 template<
class... Args>
1057 template<
class... Args>
1058 static String Format(std::nullptr_t,
const String& format,
const Args&... args);
1064 template<std::size_t N,
class... Args>
1065 static String Format(std::nullptr_t,
const char16_t(&format)[N],
const Args&... args);
1071 template<
class... Args>
1072 static String Format(
const String& format,
const Args&... args);
1127 explicit ASPOSECPP_SHARED_API
String(
const codeporting_icu::UnicodeString& str);
1130 explicit ASPOSECPP_SHARED_API
String(codeporting_icu::UnicodeString&& str)
noexcept;
1133 explicit String(
const std::wstring& str) :
String(str.data(), ASPOSECPP_CHECKED_CAST(int, str.length())) {};
1136 explicit String(
const std::u16string& str) :
String(str.data(), ASPOSECPP_CHECKED_CAST(int, str.length())) {};
1139 explicit ASPOSECPP_SHARED_API
String(
const std::string& utf8str);
1142 explicit ASPOSECPP_SHARED_API
String(
const std::u32string& u32str);
1152 int ASPOSECPP_SHARED_API
FastToAscii(
char buffer[],
int buffer_size)
const;
1164 mutable Detail::UnicodeStringHolder
m_str;
1171#if defined(_DEBUG) && (defined(_MSC_VER) || defined(__GNUC__))
1172 union IcuDebugHelper
1176 int16_t fLengthAndFlags;
1177 char16_t fBuffer[(int32_t)(64 -
sizeof(
void *) - 2) / 2];
1181 int16_t fLengthAndFlags;
1186 }
static icuDebugHelper;
1196 static int32_t CompareImpl(
const String& strA, int32_t indexA,
const String& strB, int32_t indexB,
1200 static int LastIndexOfOrdinalIgnoreCaseImpl(
const String& source,
const String& value,
int startIndex,
int count);
1201 static int IndexOfOrdinalIgnoreCaseImpl(
const String& source,
const String& value,
int startIndex,
int count);
1203 ASPOSECPP_SHARED_API
String& AddBoolImpl(
bool value);
1208 ASPOSECPP_SHARED_API
String(
const char16_t* str,
int length, uintptr_t state);
1210 inline void SetState()
1212 m_state =
reinterpret_cast<uintptr_t
>(
this);
1225 return String(left, std::extent<T>::value - 1) + right;
1236 return String(left) + right;
1246 return String(left, 1) + right;
1254template<class Chars, typename std::enable_if<IsStringLiteral<Chars, char_t>::value>::type* =
nullptr>
1257 return String(left, std::extent<Chars>::value - 1) == right;
1265template<class T, typename std::enable_if<IsStringPointer<T, char_t>::value>::type* =
nullptr>
1268 return String(left) == right;
1276template<class Chars, typename std::enable_if<IsStringLiteral<Chars, char_t>::value>::type* =
nullptr>
1279 return !(
String(left, std::extent<Chars>::value - 1) == right);
1287template<class T, typename std::enable_if<IsStringPointer<T, char_t>::value>::type* =
nullptr>
1290 return !(
String(left) == right);
1378 struct hash<
System::String>
1385 return static_cast<std::size_t
>(str.
GetHashCode());
1391typedef char16_t* system_char_array;
1393typedef char16_t const* const_system_char_array;
1395#include <system/details/format_builder.h>
1404template<
class... Args>
1407 System::Details::FormatBuilder builder(format, fp);
1408 System::Details::FormatBuilder::AddArguments(builder, args...);
1410 return builder.BuildResult();
1417template<
class... Args>
1420 System::Details::FormatBuilder builder(format);
1421 System::Details::FormatBuilder::AddArguments(builder, args...);
1423 return builder.BuildResult();
1430template<std::size_t N,
class... Args>
1433 System::Details::FormatBuilder builder(format);
1434 System::Details::FormatBuilder::AddArguments(builder, args...);
1436 return builder.BuildResult();
1444template<
class... Args>
1447 System::Details::FormatBuilder builder(format);
1448 System::Details::FormatBuilder::AddArguments(builder, args...);
1450 return builder.BuildResult();
1460 System::Details::FormatBuilder builder(format);
1461 System::Details::FormatBuilder::AddArguments(builder, args);
1463 return builder.BuildResult();
Makes culture-sensitive string comparison. Objects of this class should only be allocated using Syste...
Definition: compare_info.h:24
Enumerator to iterate through string elements (characters). Objects of this class should only be allo...
Definition: text_element_enumerator.h:28
Defines locale-specific text properties. Setter operations are only enabled on non-read-only objects....
Definition: text_info.h:23
Base class that enables using methods available for System.Object class in C#. All non-trivial classe...
Definition: object.h:62
virtual const TypeInfo & GetType() const
Gets actual type of object. Analog of C# System.Object.GetType() call.
static bool ReferenceEquals(ptr const &objA, ptr const &objB)
Compares objects by reference.
Definition: object.h:115
Pointer class to wrap types being allocated on heap. Use it to manage memory for classes inheriting O...
Definition: smart_ptr.h:180
String class used across the library. Is a substitute for C# System.String when translating code....
Definition: string.h:122
String & operator+=(uint8_t value)
Concatenation assignment operator.
String(const char *str, int length)
Constructs string from character string pointer and explicit length.
char_t operator[](int index) const
Gets character at specified position.
String(const std::wstring &str)
Creates String from widestring.
Definition: string.h:1133
ArrayPtr< char_t > ToCharArray(int32_t startIndex=0, int32_t length=INT32_MAX) const
Converts string or substring to array of characters.
int IndexOfAny(const ArrayPtr< char_t > &anyOf) const
Looks for any of passed characters through the whole string. Compares first string character to all c...
String(const String &str)
Copy constructor.
static String FromAscii(const char *asciiStr, int len)
Creates String from ASCII string.
int IndexOfAny(char_t c, int startIndex=0) const
Character forward lookup.
String PadRight(int totalWidth, char_t c=u' ') const
Adds padding on the right of original string.
String(const T &value, typename std::enable_if< IsStringPointer< T, wchar_t >::value >::type *=nullptr)
Constructs string based on widecharacter string pointer. Treats pointed string as null-terminated,...
Definition: string.h:221
bool EndsWith(const String &value, bool ignoreCase, const SharedPtr< System::Globalization::CultureInfo > &culture=nullptr) const
Checks if string ends with specified substring.
String(const T &value, typename std::enable_if< IsStringPointer< T, char >::value >::type *=nullptr)
Constructs string based on character string pointer. Treats pointed string as null-terminated in UTF8...
Definition: string.h:171
std::u16string ToU16Str() const
Converts string to std::u16string.
bool operator<(const String &str) const
Order-compares strings.
ArrayPtr< String > Split(char_t separatorA, char_t separatorB, StringSplitOptions opt=StringSplitOptions::None) const
Splits string by one of two characters.
String Substring(int32_t startIndex, int32_t length) const
Extracts substring.
int IndexOf(const String &str, int startIndex=0) const
Substring forward lookup.
String TrimEnd(const String &anyOf) const
Removes all occurrences of passed characters from end of the string.
String & operator+=(int32_t value)
Concatenation assignment operator.
String & operator=(const String &str)
Assignment operator.
static String FromUtf8(const std::string &utf8)
Creates String from utf8 string.
int IndexOfAny(const String &str, int startIndex=0) const
Consequently looks for all characters of str in this. If first character is found,...
String ToLower() const
Converts all string's characters to lower case.
bool IsNormalized(System::Text::NormalizationForm form) const
Checks if unicode string is normalized using normalization form specified.
String Remove(int32_t startIndex, int32_t count=INT32_MAX) const
Extracts everything but substring from current string.
String(const std::u32string &u32str)
Creates String from std::u32string string.
String TrimStart(const String &anyOf) const
Removes all occurrences of passed characters from beginning of the string.
String & reset()
Sets string to null. Is analogous to 'string_variable_name = null' in C#.
String & Append(const char16_t *src, int32_t startIndex, int32_t count)
Puts some characters into string. Changes string size.
String & operator+=(T value)
Concatenation assignment operator.
Definition: string.h:436
uintptr_t m_state
String state. Contains value 0 if string is null, 1 if string is constructed from string literal.
Definition: string.h:1169
String & operator+=(const String &str)
Concatenation assignment operator.
String Trim(const String &anyOf) const
Removes all occurrences of passed characters from both beginning and end of the string.
bool Equals(const String &str) const
String equality comparison. Uses System::StringComparison::Ordinal comparison mode.
String TrimStart() const
Removes all whitespace characters from beginning of the string.
String & operator+=(char_t c)
Concatenation assignment operator.
bool EndsWith(const String &value) const
Checks if string ends with specified substring.
int LastIndexOf(const String &str, System::StringComparison comparison_type) const
Substring backward lookup.
String Clone() const
Creates a copy of current string.
int get_Length() const
Gets string length.
static int Compare(const String &strA, int indexA, const String &strB, int indexB, int length, bool ignoreCase, const SharedPtr< System::Globalization::CultureInfo > &ci)
Less-equal-greater-compares two substrings.
bool operator==(const String &str) const
Equality comparison operator.
String & operator+=(int64_t value)
Concatenation assignment operator.
int IndexOf(const String &str, System::StringComparison comparison_type) const
Substring forward lookup.
int GetHashCode() const
Hashes contained string. Implemented in ICU, doesn't match hashes in C#.
reverse_iterator rbegin() const
Returns reverse iterator to the last character (if any) of actual string buffer.
String ToLower(const SharedPtr< System::Globalization::CultureInfo > &cultureInfo) const
Converts all string's characters to lower case using specific culture.
String Trim(char_t ch) const
Removes all occurrences of passed character from both beginning and end of the string.
String(codeporting_icu::UnicodeString &&str) noexcept
Move constructor.
String(const std::u16string &str)
Creates String from utf16 string.
Definition: string.h:1136
static String Join(const String &separator, const SharedPtr< System::Collections::Generic::IEnumerable< String > > &parts)
Joins array using string as separator.
int LastIndexOf(char_t value, int32_t startIndex, int32_t count) const
Character backward lookup.
static String FromAscii(const std::string &asciiStr)
Creates String from ASCII string.
String & operator=(String &&str) noexcept
Move assignment operator.
static String Format(const SharedPtr< IFormatProvider > &fp, const String &format, const Args &... args)
Formats string in C# style.
Definition: string.h:1405
int LastIndexOfAny(const ArrayPtr< char_t > &anyOf) const
Looks for any of passed characters through whole string backwardly. Compares last string character to...
Detail::UnicodeStringHolder m_str
Actual string value.
Definition: string.h:1164
static String FromUtf16(const std::u16string &u16str)
Creates String from utf16 string.
int LastIndexOf(const String &str, int startIndex, System::StringComparison comparison_type) const
Substring backward lookup.
String operator+(const T &value) const
Adds reference type object string representation to the end of the string.
Definition: string.h:368
bool Is(const System::TypeInfo &target) const
Checks if string object is of type specified by TypeInfo passed.
Definition: string.h:620
String(String &&str) noexcept
Move constructor.
String ToLowerInvariant() const
Converts all string's characters to lower case using invariant culture.
bool StartsWith(const String &value) const
Checks if string begins with specified substring.
reverse_iterator rend() const
Returns reverse iterator to the before first character (if any) of actual string buffer.
String(const wchar_t *str, int length)
Constructs string from widecharacter string pointer and explicit length. Conversion from wchar_t is t...
int IndexOf(const String &str, int startIndex, int count) const
Substring forward lookup.
static String Join(const String &separator, const ArrayPtr< String > &parts, int startIndex=0, int count=-1)
Joins array using string as separator.
static bool Equals(const String &strA, const String &strB)
Equal-compares two strings using Ordial comparison mode.
int LastIndexOfAny(const ArrayPtr< char_t > &anyOf, int32_t startindex, int32_t count) const
Looks for any of passed characters through substring backwardly. Compares last string character to al...
String & operator+=(uint32_t value)
Concatenation assignment operator.
ArrayPtr< String > Split(const String &separator, StringSplitOptions opt=StringSplitOptions::None) const
Splits string by substring.
String(const ArrayPtr< char16_t > &arr)
Converts whole character array to string.
static const String Empty
Empty string.
Definition: string.h:894
String & operator+=(int16_t value)
Concatenation assignment operator.
ArrayPtr< String > Split(const String &separator, int count, StringSplitOptions opt=StringSplitOptions::None) const
Splits string by substring.
String(const T &value, typename std::enable_if< std::is_same< T, std::nullptr_t >::value >::type *=nullptr)
Nullptr constructor. Declared as template to resolve priorities with other template constructors.
Definition: string.h:202
static String FromUtf8(const uint8_t *utf8)
Creates String from utf8 string.
String ToUpperInvariant() const
Converts all string's characters to upper case using invariant culture.
static String Copy(const String &str)
Creates string copy.
Definition: string.h:1043
static const String Null
Null string.
Definition: string.h:896
String(const char16_t *str, int length)
Constructs string from character string pointer and explicit length.
bool operator==(std::nullptr_t) const
Checks if string is null. Applies same logic as IsNull() call.
String operator+(uint32_t i) const
Adds unsigned integer value string representation to the end of the string.
static bool Equals(const String &strA, const String &strB, System::StringComparison comparison_type)
Equal-compares two strings.
String(const wchar_t ch, int count=1)
Fill constructor. Conversion from wchar_t is time-consuming on some platforms, so no implicit convers...
String(const char16_t ch, int count)
Fill constructor.
String & operator+=(uint16_t value)
Concatenation assignment operator.
static int Compare(const String &strA, int indexA, const String &strB, int indexB, int length, bool ignoreCase=false)
Less-equal-greater-compares two substrings.
static bool IsNullOrEmpty(const String &str)
Checks if passed string is null or empty.
bool operator!=(std::nullptr_t) const
Checks if string is not null. Applies same logic as IsNull() call.
static int Compare(const String &strA, int indexA, const String &strB, int indexB, int length, System::StringComparison comparison_type)
Less-equal-greater-compares two strings.
String operator+(int i) const
Adds integer value string representation to the end of the string.
ArrayPtr< String > Split(char_t separator, int32_t count, StringSplitOptions opt=StringSplitOptions::None) const
Splits string by character.
String operator+(T arg) const
Adds boolean value string representation to the end of the string.
Definition: string.h:386
static int Compare(const String &strA, const String &strB, System::StringComparison comparison_type)
Less-equal-greater-compares two strings.
bool EndsWith(const String &value, System::StringComparison comparisonType) const
Checks if string ends with specified substring.
String Substring(int32_t startIndex) const
Extracts substring.
String operator+(const T &arg) const
String concatenation with string literal or character string pointer.
Definition: string.h:338
String TrimEnd(char_t ch) const
Removes all occurrences of passed character from end of the string.
const UChar * begin() const
Returns pointer to the beginning of actual string buffer. Never reallocates anything....
ArrayPtr< String > Split(const ArrayPtr< String > &separators, StringSplitOptions opt=StringSplitOptions::None) const
Splits string by substring.
int LastIndexOf(const String &str, int startIndex=INT32_MAX) const
Substring backward lookup.
std::wstring ToWCS() const
Converts string to std::wstring.
int FastToAscii(char buffer[], int buffer_size) const
Tries to convert a String to an ASCII string.
int IndexOf(const String &value, int startIndex, int count, System::StringComparison comparisonType) const
Substring forward lookup.
String TrimStart(char_t ch) const
Removes all occurrences of passed character from beginning of the string.
String Replace(char_t oldValue, char_t newValue) const
Replaces all occurrences of character in the string.
String ToUpper(const SharedPtr< System::Globalization::CultureInfo > &cultureInfo) const
Converts all string's characters to upper case using specific culture.
String(const T &value, typename std::enable_if< IsStringPointer< T, char16_t >::value >::type *=nullptr)
Constructs string based on character string pointer. Treats pointed string as null-terminated,...
Definition: string.h:153
String operator+(double d) const
Adds floating point value string representation to the end of the string.
String(const ArrayPtr< char16_t > &arr, int offset, int len)
Converts character array subrange to string. If parameters are out of array bounds,...
String ToUpper() const
Converts all string's characters to upper case.
int IndexOf(char_t c, int startIndex, int count) const
Character forward lookup in substring.
void CopyTo(int sourceIndex, const ArrayPtr< char_t > &destination, int destinationIndex, int count) const
Copies string characters into existing array elements. No resize is being done.
static int Compare(const String &strA, const String &strB, bool ignoreCase=false)
Less-equal-greater-compares two strings.
int LastIndexOfAny(const ArrayPtr< char_t > &anyOf, int32_t startindex) const
Looks for any of passed characters through substring backwardly. Compares last string character to al...
String(const char16_t *str, int start, int length)
Constructs string from character string pointer from starting position using length.
int CompareTo(const String &str) const
Compares two strings in 'less-equals-more' style. Uses current culture.
String PadLeft(int totalWidth, char_t c=u' ') const
Adds padding on the left of original string.
String TrimStart(const ArrayPtr< char_t > &anyOf) const
Removes all occurrences of passed characters from beginning of the string.
bool IsAsciiString() const
Indicates if a String contains ASCII symbols only.
ArrayPtr< String > Split(const ArrayPtr< char_t > &separators, int32_t count, StringSplitOptions opt=StringSplitOptions::None) const
Splits string by one of characters specified.
static String Concat(const String &str0, const String &str1, const String &str2, const String &str3)
Concatenates strings.
String operator+(const String &str) const
String concatenation operator.
bool IsNullOrEmpty() const
Checks if string is empty or is considered null.
static String Concat(const String &str0, const String &str1, const String &str2)
Concatenates strings.
static String Join(const String &separator, const System::Details::ArrayView< String > &parts, int startIndex=0, int count=-1)
Joins array using string as separator.
String & operator+=(double value)
Concatenation assignment operator.
static int CompareOrdinal(const String &strA, const String &strB)
Less-equal-greater-compares two strings using ordinal mode.
String(const std::string &utf8str)
Creates String from std::string string presented in format UTF-8.
std::string ToUtf8String() const
Converts string to std::string. Uses UTF-8 encoding.
static String FromUtf8(const char *utf8, int len)
Creates String from utf8 string.
bool StartsWith(const String &value, System::StringComparison comparisonType) const
Checks if string begins with specified substring.
static bool IsNullOrWhiteSpace(const String &str)
Indicates whether a specified string is null, empty, or consists only of white-space characters.
bool operator!=(const String &str) const
Non-equality comparison operator.
static String Join(const String &separator, const ArrayPtr< SharedPtr< Object > > &parts)
Joins array using string as separator.
String operator+(char_t x) const
Adds character to the end of the string.
String TrimEnd() const
Removes all whitespace characters from end of the string.
ArrayPtr< String > Split(const ArrayPtr< char_t > &separators, StringSplitOptions opt=StringSplitOptions::None) const
Splits string by one of characters specified.
bool Equals(const String &str, System::StringComparison comparison_type) const
String equality comparison. Several modes provided by StringComparison enumeration are supported.
const UChar * end() const
Returns pointer to the end of actual string buffer. Never reallocates anything. Doesn't guarantee buf...
String ToString(const SharedPtr< IFormatProvider > &) const
Wrapper for handling String class in contexts where ToString() is being called on value type objects.
Definition: string.h:497
const UChar * u_str() const
Returns ICU-styled null-terminated buffer. May reallocate the string.
ArrayPtr< String > Split(const ArrayPtr< String > &separators, int count, StringSplitOptions opt=StringSplitOptions::None) const
Splits string by substring. Currently, only supports separators array of zero or one elements.
static String Concat(const String &str0, const String &str1)
Concatenates strings.
String ToString() const
Wrapper for handling String class in contexts where ToString() is being called on value type objects.
Definition: string.h:494
String Trim() const
Removes all whitespace characters from both beginning and end of the string.
static int CompareOrdinal(const String &strA, int indexA, const String &strB, int indexB, int length)
Less-equal-greater-compares two strings using ordinal mode.
String operator+(int64_t v) const
Adds integer value string representation to the end of the string.
int IndexOf(char_t c, int startIndex=0) const
Character forward lookup.
ArrayPtr< uint8_t > ToByteArray(int32_t startIndex=0, int32_t length=INT32_MAX, bool LE=true) const
Converts string or substring to array of bytes.
std::u32string ToU32Str() const
Converts string to std::u32string.
int IndexOfAny(const ArrayPtr< char_t > &anyOf, int32_t startindex) const
Looks for any of passed characters through substring. Compares first string character to all characte...
String TrimEnd(const ArrayPtr< char_t > &anyOf) const
Removes all occurrences of passed characters from end of the string.
static String FromUtf32(const uint32_t *utf32, int32_t length)
Creates String from utf32 string.
String(T &value, typename std::enable_if< IsStringLiteral< T, char >::value >::type *=nullptr)
Constructs string based on string literal. Considers literal a null-terminated string in UTF8,...
Definition: string.h:162
int IndexOf(const String &str, int startIndex, System::StringComparison comparison_type) const
Substring forward lookup.
static String FromWCS(const std::wstring &wcs)
Creates String from widestring.
bool IsEmpty() const
Checks if string is both non-null and empty.
int IndexOfAny(const ArrayPtr< char_t > &anyOf, int32_t startindex, int32_t count) const
Looks for any of passed characters through substring. Compares first string character to all characte...
String & operator+=(uint64_t value)
Concatenation assignment operator.
String Insert(int startIndex, const String &value) const
Inserts substring at specified position.
bool Contains(const String &str) const
Checks if str is a substring of current string.
static String FromAscii(const char *asciiStr)
Creates String from ASCII string.
String & SetCharAt(int index, char_t ch)
Sets character at specified position.
int LastIndexOf(char_t value) const
Character backward lookup.
ArrayPtr< String > Split(char_t separator=u' ', StringSplitOptions opt=StringSplitOptions::None) const
Splits string by character.
bool StartsWith(const String &value, bool ignoreCase, const SharedPtr< System::Globalization::CultureInfo > &culture=nullptr) const
Checks if string begins with specified substring.
static String FromUtf8(const char *utf8)
Creates String from utf8 string.
bool IsNull() const
Checks if string is considered null. String is null and only if it is constructed via String() constr...
Definition: string.h:280
std::reverse_iterator< const char16_t * > reverse_iterator
Reverse iterator type.
Definition: string.h:138
String(T &value, typename std::enable_if< IsStringLiteral< T, wchar_t >::value >::type *=nullptr)
Constructs string based on widestring literal. Considers literal a null-terminated string,...
Definition: string.h:213
String Replace(const String &oldValue, const String &newValue) const
Replaces all occurrences of lookup in this string.
String()
Default constructor. Creates string object which is considered null.
String(const codeporting_icu::UnicodeString &str)
Wraps UnicodeString into String.
static String Concat(const ArrayPtr< String > &parts)
Concatenates strings.
String Normalize(System::Text::NormalizationForm form) const
Normalizes unicode string using normalization form specified.
String Trim(const ArrayPtr< char_t > &anyOf) const
Removes all occurrences of passed characters from both beginning and end of the string.
static int Compare(const String &strA, const String &strB, bool ignoreCase, const SharedPtr< System::Globalization::CultureInfo > &ci)
Less-equal-greater-compares two strings.
int LastIndexOf(const String &value, int startIndex, int count, StringComparison comparisonType) const
Substring backward lookup.
String(T &value, typename std::enable_if< IsStringLiteral< T, char16_t >::value >::type *=nullptr)
Constructs string based on string literal. Considers literal a null-terminated string,...
Definition: string.h:146
std::string ToAsciiString() const
Converts string to std::string. Uses ASCII encoding.
int LastIndexOf(char_t value, int32_t startIndex) const
Character backward lookup.
Regular expression that follows C#-like syntax. Objects of this class should only be allocated using ...
Definition: regex.h:30
Buffer to accumulate string part by part. This type can be allocated either in stack as value type or...
Definition: string_builder.h:17
Represents a particular type and provides information about it.
Definition: type_info.h:109
@ Text
Defines color adjustment information for text.
NormalizationForm
Defines how to normalize Unicode string.
Definition: normalization_form.h:9
Definition: db_command.h:9
void PrintTo(DateTime value, std::ostream *stream)
Prints value to ostream. Mostly used for debug.
bool operator!=(ArraySegment< T > a, ArraySegment< T > b)
Definition: array_segment.h:157
Decimal operator+(const T &x, const Decimal &d)
Returns a new instance of Decimal class that represents a value that is a sum of the specified value ...
Definition: decimal.h:542
std::istream & operator>>(std::istream &in, String &str)
Gets a string from the input streamusing UTF-8 encoding.
StringComparison
Defines string comparison style.
Definition: string_comparison.h:13
StringSplitOptions
Determines string splitting behavior.
Definition: string.h:54
@ None
Keep empty strings when splitting string.
@ RemoveEmptyEntries
Discard empty strings when splitting string.
std::ostream & operator<<(std::ostream &stream, DateTime date_time)
Insert data into the stream using UTF-8 encoding.
Definition: date_time.h:729
bool operator==(ArraySegment< T > a, ArraySegment< T > b)
Definition: array_segment.h:151
Template magic to deduce cast results.
Definition: object.h:385
SmartPtr< TTo > type
An alias for a pointer to an instance of TTo.
Definition: object.h:387
Template magic to check if a type is a sequence of string characters.
Definition: string.h:68
Template magic to check if a type is a string literal.
Definition: string.h:82
Template magic to check if a type is a pointer to character string.
Definition: string.h:75