TStringHelper — помощник при работе с типом String в Delphi.

Здравствуйте уважаемые коллеги!
TStringHelper, как и помощники в общем, появились в Delphi начиная с версии XE3. Ниже приведено описание и примеры использования методов и свойств помощника TStringHelper.

Empty

Возвращает пустую строку.

var
  s: string;
begin
  s := string.Empty;
  // Результат: s = ''. Аналогично s := '';
end;


Create(C: Char; Count: Integer)

Создает строку из символов C количеством Count;

var
  s: string;
begin
  s := string.Create('F', 6); 
  // Результат: s = 'FFFFFF'
end;	


Create(const Value: array of Char)

Создает строку из переданного массива символов Value.

var
  s: string;
begin
  s := string.Create(['a','b','c','d','e']); 
  // Результат: s = 'abcde'
end;	


Create(const Value: array of Char; StartIndex: Integer; Length: Integer)

Создает строку из массива символов Value начиная с позиции StartIndex количеством Length символов.

var
  s: string;
begin
  s := string.Create(['a','b','c','d','e'], 1, 2);
  // Результат: s = 'bc' 
end;


Compare(const StrA: string; const StrB: string)

Сравнение двух строк StrA и StrB с учетом регистра. Если StrA < StrB, то возвращает отрицательное значение, если StrA > StrB, то возвращает положительное значение, если строки равны, то возвращает 0.

begin
  string.Compare('a','A'); // Вернет 32.
end;


Compare(const StrA: string; const StrB: string; IgnoreCase: Boolean)

Сравнение двух строк StrA и StrB с учетом, IgnoreCase установле в False, или без учета регистра, IgnoreCase установлен в True. Если StrA < StrB, то возвращает отрицательное значение, если StrA > StrB, то возвращает положительное значение, если строки равны, то возвращает 0.

begin
  string.Compare('a','A',True); // Вернет 0.
end;


Compare(const StrA: string; IndexA: Integer; const StrB: string; IndexB: Integer; Length: Integer)

Сравнить строку StrA, начиная с символа IndexA со строкой StrB, начиная с символа IndexB в количестве Length символов с учетом регистра. Если StrA < StrB, то возвращает отрицательное значение, если StrA > StrB, то возвращает положительное значение, если строки равны, то возвращает 0.

begin	
  string.Compare('STRING COMPARE', 1, 'string_compare', 1, 3) // Вернет -32
end;


Compare(const StrA: string; IndexA: Integer; const StrB: string; IndexB: Integer; Length: Integer; IgnoreCase: Boolean)

Сравнить строку StrA, начиная с символа IndexA со строкой StrB, начиная с символа IndexB в количестве Length символов. С учетом, IgnoreCase устанавливается в False, или без учета регистра, IgnoreCase устанавливается в True. Если StrA < StrB, то возвращает отрицательное значение, если StrA > StrB, то возвращает положительное значение, если строки равны, то возвращает 0.

begin	
  string.Compare('STRING COMPARE', 1, 'string_compare', 1, 3) // Вернет 0
end;


CompareOrdinal(const strA: string; const strB: string)

Сравнивает строку StrA со строкой StrB по кодам символов.

begin	
  string.Compare('STRING COMPARE', 'string_compare');
end;


CompareOrdinal(const strA: string; indexA: Integer; const strB: string; indexB: Integer; length: Integer)

Сравнивает по кодам символов строку StrA, начиная с символа IndexA со строкой StrB, начиная с символа IndexB в количестве Length символов.

begin	
  string.Compare('STRING COMPARE', 1, 'string_compare', 1, 3);
end;


CompareTo(const strB: string)

Сравнивает текущую строку со строкой StrB. Если Текущая строка < StrB, то возвращает отрицательное значение, если Текущая строка > StrB, то возвращает положительное значение, если строки равны, то возвращает 0.

var
  s: string;
begin
  s := string.Create(['A','A','A','A']);
  s.CompareTo('AAAA'); // Вернет 0
end; 


Contains(const Value: string)

Если текущая строка содержит строку Value, то вернет True иначе False. Учитывается регистр.

var
  s: string;
begin
  s := 'String helper functions';
  s.Contains('HELP'); // Вернет False
  s.Contains('help'); // Вернет True
end; 


Copy(const Str: string)

Возвращает строку Str.

var
  s: string;
begin
  s := string.Copy('value');
  // Результат: s = 'value'
end;


CopyTo(SourceIndex: Integer; var destination: array of Char; DestinationIndex: Integer; Count: Integer)

Копирует текущую строку, начиная с символа SourceIndex в массив символов destination, начиная с DestinationIndex в количестве Count символов.

var
  ac: array[0..9] of Char;
begin
  'String helper functions'.CopyTo(1, a, 0, 10);	  
  // a[0]='S', a[1]='t', a[2]='r', a[3]='i', a[4]='n'
  // a[5]='g', a[6]=' ', a[[7]='h', a[8]='e', a[9]='l'
end;


EndsText(const ASubText, AText: string)

Сравнивает окончание строки AText со строкой ASubText. При совпадении возвращает True.

begin
  string.EndsText('ions', 'String helper functions'); // Вернет True
end;


EndsWith(const Value: string)

Сравнивает окончание текущей строки со строкой Value с учетом регистра. При совпадении возвращает True.

begin
  'String helper functions'.EndsWith('IONS'); // Вернет False
end;


EndsWith(const Value: string; IgnoreCase: Boolean)

Сравнивает окончание текущей строки со строкой Value. IgnoreCase = True — без учета регистра, IgnoreCase = False — с учетом регистра. При совпадении возвращает True.

begin
  'String helper functions'.EndsWith('IONS', False); // Вернет False
  'String helper functions'.EndsWith('IONS', True); // Вернет True
end;


Equals(const Value: string)

Сравнивает текущую строку со строкой Value с учетом регистра. При совпадении возвращает True.

begin
  'String helper functions'.Equals('Some string'); // Вернет False
end;


Equals(const a: string; const b: string)

Сравнивает строку a со строкой b с учетом регистра. При совпадении возвращает True.

begin
  string.Equals('Some string', 'Some string'); // Вернет True
end;


Format(const Format: string; const args: array of const)

Подставляет значения в форматированную строку Format из массива args.

var
  s: string;
begin
  s = string.Forma('Number is %d', [5]);
  // Результат: s = 'Number is 5';
end;


GetHashCode

В данный момент не работает. Возвращает -1.



IndexOf(value: Char)

Возвращает позицию символа value в текущей строке. Если символ не найден, вернет -1;

begin
  'String helper functions'.IndexOf('n'); // Вернет 4
end;


IndexOf(const Value: string)

Возвращает позицию совпадения строки Value с текущей строкой. Если строка не найдена, вернет -1.

begin
  'String helper functions'.IndexOf('fun'); // Вернет 14
end;


IndexOf(Value: Char; StartIndex: Integer)

Возвращает позицию символа value в текущей строке, начиная с позиции StartIndex. Если символ не найден, вернет -1;

begin
  'String helper functions'.IndexOf('n', 7); // Вернет 16
end;


IndexOf(const Value: string; StartIndex: Integer)

Возвращает позицию совпадения строки Value с текущей строкой, начиная с позиции StartIndex. Если строка не найдена, вернет -1.

begin
  'String helper functions'.IndexOf('help', 14); // Вернет -1
end;


IndexOf(Value: Char; StartIndex: Integer; Count: Integer)

Возвращает позицию символа value в текущей строке, начиная с позиции StartIndex. Сравнивает Count сиволов. Если символ не найден, вернет -1.

begin
  'String helper functions'.IndexOf('n', 3, 8); // Вернет 4
end;


IndexOf(const Value: string; StartIndex: Integer; Count: Integer)

Возвращает позицию совпадения строки Value с текущей строкой, начиная с позиции StartIndex, включая Count символов. Если строка не найдена, вернет -1.

begin
  'String helper functions'.IndexOf('fun', 9, 8); // Вернет 14
end;


IndexOfAny(const AnyOf: array of Char)

Возвращает позицию совпадения любого из массива AnyOf в текущей строке. Если ни один символ не найден, то вернет -1.

begin
  'String helper functions'.IndexOfAny(['a','b','c']); // Вернет 17
end;


IndexOfAny(const AnyOf: array of Char; StartIndex: Integer)

Возвращает позицию совпадения любого из массива AnyOf в текущей строке, начиная с позиции StartIndex. Если ни один символ не найден, то вернет -1.

begin
  'String helper functions'.IndexOfAny(['a','b','c'], 18); // Вернет -1
end;


IndexOfAny(const AnyOf: array of Char; StartIndex: Integer; Count: Integer)

Возвращает позицию совпадения любого символа из массива AnyOf в текущей строке, начиная с позиции StartIndex, проверяя Count символов. Если ни один символ не найден, то вернет -1.

begin
  'String helper functions'.IndexOfAny(['d','e','f'], 2, 12); // Вернет 8
end;


Insert(StartIndex: Integer; const Value: string)

Вставляет строку Value в текущую строку начиная с позиции StartIndex.

var
  s: string;
begin
  s := 'Some string'.Insert(5, 'new ');
  // Результат: s = 'Some new string';
end;


IsDelimiter(const Delimiters: string; Index: Integer)

Проверяет: присутствует ли текущая строка в строке Delimiters начиная с позиции Index.

begin
  'C:\'.IsDelimiter('C:\Windows\System32', 0) // Вернет True
  'C:\'.IsDelimiter('C:\Windows\System32', 5) // Вернет False
end;


IsEmpty

Возвращает True, если Текущая строка пустая.

var
  s: string;
begin
  s := 'Some string';
  s.IsEmpty; // Вернет False;
end;


IsNullOrEmpty(const Value: string)

Возвращает True, если строка Value пустая.

var
  s: string;
begin	  
  string.IsNullOrEmpty(s); // Вернет True;
end;


IsNullOrWhiteSpace(const Value: string)

Не работает. Возвращает False.



Join(const Separator: string; const values: array of const)

Не работает. Возвращает пустую строку.



Join(const Separator: string; const Values: array of string)

Объединяет значения из массива Values в строку используя разделитель Separator.

var
  a: array[0..2] of string;
  s: string;
begin	  
  a[0] := 'a';
  a[1] := 'b';
  a[2] := 'c';
  s := string.Join(',',a);
  // Результат: s = 'a,b,c';
end;


Join(const Separator: string; const Values: IEnumerable<string>)

Не работает. Возвращает пустую строку.



Join(const Separator: string; const value: array of string; StartIndex: Integer; Count: Integer)

Объединяет значения из массива Values, начиная с позиции StartIndex количеством Count в строку используя разделитель Separator.

var
  a: array[0..2] of string;
  s: string;
begin	  
  a[0] := 'a';
  a[1] := 'b';
  a[2] := 'c';
  s := string.Join(',',a,0,2);
  // Результат: s = 'a,b';
end;


LastDelimiter(const Delims: string)

Возвращает последнюю совпавшую позицию строки Delims с текущей строкой. Если совпадений не найдено, то вернет -1.

begin
  'C:\Windows\System32'.LastDelimiter('\'); // Вернет 10
end;


LastIndexOf(Value: Char)

Возвращает последнюю позицию символа Value в текущей строке. Если совпадений не найдено, то вернет -1.

begin
  'String helper functions'.LastIndexOf('n'); // Вернет 21
end;


LastIndexOf(const Value: string)

Возвращает последнюю позицию совпадения строки Value с текущей строкой. Если строка не найдена, вернет -1.

begin
  'One or more'.LastIndexOf('or') // Вернет 8
end;


LastIndexOf(Value: Char; StartIndex: Integer)

Возвращает последнюю позицию символа Value в текущей строке, сравнивает с начала и до позиции StartIndex. Если совпадений не найдено, то вернет -1.

begin
  'String helper functions'.LastIndexOf('h', 8) // Вернет -1 
end;


LastIndexOf(const Value: string; StartIndex: Integer)

Возвращает последнюю позицию совпадения строки Value в текущей строке, сравнивает с начала и до позиции StartIndex. Если строка не найдена, вернет -1.

begin	
  'String helper functions'.LastIndexOf('help', 9) // Вернет -1 
end;


LastIndexOf(Value: Char; StartIndex: Integer; Count: Integer)

Возвращает последнюю позицию символа Value в текущей строке, сравнивает с начала и до позиции StartIndex, проверяя Count символов. Если совпадений не найдено, то вернет -1.

begin	
  'String helper functions'.LastIndexOf('n', 7, 3) // Вернет 4
end;


LastIndexOf(const Value: string; StartIndex: Integer; Count: Integer)

Возвращает последнюю позицию строки Value в текущей строке, сравнивает с начала и до позиции StartIndex, проверяя Count символов. Если совпадений не найдено, то вернет -1.

begin	
  'String helper functions'.LastIndexOf('help', 17, 12) // Вернет 7
end;


LastIndexOfAny(const AnyOf: array of Char)

Возвращает последнюю позицию любого найденного символа из массива AnyOf в текущей строке. Если совпадений не найдено, то вернет -1.

begin	
  'String helper functions'.LastIndexOfAny(['g','n','t']) // Вернет 21
end;


LastIndexOfAny(const AnyOf: array of Char; StartIndex: Integer)

Возвращает последнюю позицию любого найденного символа из массива AnyOf в текущей строке до позиции StartIndex. Если совпадений не найдено, то вернет -1.

begin	
  'String helper functions'.LastIndexOfAny(['g','n','t'], 15) // Вернет 5
end;


LastIndexOfAny(const AnyOf: array of Char; StartIndex: Integer; Count: Integer)

Возвращает последнюю позицию любого найденного символа из массива AnyOf, начиная с позиции StartIndex, проверяя Count символов. Если совпадений не найдено, то вернет -1.

begin	
  'String helper functions'.LastIndexOfAny(['g','n','t'], 15, 3) // Вернет -1
end;


PadLeft(TotalWidth: Integer)

Дополняет текущую строку пробелами до длинны TotalWidth слева.

var
  s: string;
begin
  s := 'Some string'.PadLeft(15);
  // Результат: s = '    Some string'
end;


PadLeft(TotalWidth: Integer; PaddingChar: Char)

Дополняет текущую строку символами PaddingChar до длинны TotalWidth слева.

var
  s: string;
begin
  s := 'Some string'.PadLeft(15,'_');
  // Результат: s = '____Some string'
end;


PadRight(TotalWidth: Integer)

Дополняет текущую строку пробелами до длинны TotalWidth справа.

var
  s: string;
begin
  s := 'Some string'.PadRight(15);
  // Результат: s = 'Some string    '
end;


PadRight(TotalWidth: Integer; PaddingChar: Char)

Дополняет текущую строку символами PaddingChar до длинны TotalWidth справа.

var
  s: string;
begin
  s := 'Some string'.PadRight(15,'_');
  // Результат: s = 'Some string____'
end;


Remove(StartIndex: Integer)

Удаляет символы из текущей строки начиная с позиции StartIndex и до конца.

var
  s: string;
begin
  s := 'Some string'.Remove(4);
  // Результат: s = 'Some'
end;


Remove(StartIndex: Integer; Count: Integer)

Удаляет Count символов из текущей строки начиная с позиции StartIndex.

var
  s: string;
begin
  s := 'Some string'.Remove(4,3);
  // Результат: s = 'Somering'
end;


Replace(OldChar: Char; NewChar: Char)

Заменяет все символы OldChar в текущей строке на симвопл NewChar.

var
  s: string;
begin
  s := 'String helper functions'.Replace('n','$');
  // Результат: s = 'Stri$g helper fu$ctio$s'
end;


Replace(OldChar: Char; NewChar: Char; ReplaceFlags: TReplaceFlags)

Заменяет символы OldChar в текущей строке на симвопл NewChar, используя насройки ReplaceFlags: rfReplaceAll — заменить все найденные; rfIgnoreCase — игнорировать регистр.

var
  s: string;
begin
  s := 'Some string sample'.Replace('s','$',[rfReplaceAll]);
  // Результата: s = 'Some $tring $ample'
  s := 'Some string sample'.Replace('s','$',[rfIgnoreCase]);
  // Результат: s = '$ome string sample'
  s := 'Some string sample'.Replace('s','$',[rfReplaceAll, rfIgnoreCase]);
  // Результат: s = '$ome $tring $ample'
end


Replace(const OldValue: string; const NewValue: string)

Заменяет все совпадения со строкой OldValue в текущей строке на строку NewValue.

var
  s: string;
begin
  s := 'param1 = 2 and param2 = 1 and param3 = 3'.Replace('and','or');
  // Результат: s = 'param1 = 2 or param2 = 1 or param3 = 3'
end;


Replace(const OldValue: string; const NewValue: string; ReplaceFlags: TReplaceFlags)

Заменяет все совпадения со строкой OldValue в текущей строке на строку NewValue, используя насройки ReplaceFlags: rfReplaceAll — заменить все найденные; rfIgnoreCase — игнорировать регистр.

var
  s: string;
begin
  s := 'param1 = 2 AND param2 = 1 and param3 = 3'.Replace('and','or', [rfReplaceAll]);
  // Результата: s = 'param1 = 2 AND param2 = 1 or param3 = 3'
  s := 'param1 = 2 AND param2 = 1 and param3 = 3'.Replace('and','or', [rfIgnoreCase]);
  // Результат: s = 'param1 = 2 or param2 = 1 and param3 = 3'
  s := 'param1 = 2 AND param2 = 1 and param3 = 3'.Replace('and','or', [rfReplaceAll, rfIgnoreCase]);
  // Результат: s = 'param1 = 2 or param2 = 1 or param3 = 3'
end


Split(const Separator: array of Char)

Разделяет текущую строку на массив строк TArray<string> используя в качетсве разделителей символы из массива Separator.

var
  ss: TArray<string>;
begin
  ss := '123,456.789,215'.Split([',','.']);
  // Результат: ss = ('123', '456', '789', '215')
end;


Split(const Separator: array of Char; Count: Integer)

Разделяет текущую строку на массив строк TArray<string> количеством Count, используя в качетсве разделителей символы из массива Separator.

var
  ss: TArray<string>;
begin
  ss := '123,456.789,215'.Split([',','.'], 2);
  // Результат: ss = ('123', '456')
end;


Split(const Separator: array of Char; Options: TStringSplitOptions)

Разделяет текущую строку на массив строк TArray<string> используя в качетсве разделителей символы из массива Separator. Options — условия разделения: None и ExcludeEmpty — исключать пустые.

var
  ss: TArray<string>;
begin
  ss := '123,456.,789,215'.Split([',','.'], None);
  // Результат: ss = ('123', '456', '', '789', '215')
  ss := '123,456.,789,215'.Split([',','.'], ExcludeEmpty);
  // Результат: ss = ('123', '456', '789', '215')
end;


Split(const Separator: array of string; Options: TStringSplitOptions)

Разделяет текущую строку на массив строк TArray<string> используя в качетсве разделителей строки из массива Separator. Options — условия разделения: None и ExcludeEmpty — исключать пустые.

var
  ss: TArray<string>;
begin
  ss := 'param1 = 2 and param2 = 1 and param3 = 3'.Split(['and'], ExcludeEmpty);
  // Результат: ss = ('param1 = 2 ', ' param2 = 1 ', ' param3 = 3')
end;


Split(const Separator: array of Char; Count: Integer; Options: TStringSplitOptions)

Разделяет текущую строку на массив строк TArray<string> количеством Count, используя в качетсве разделителей символы из массива Separator. Options — условия разделения: None и ExcludeEmpty — исключать пустые.

var
  ss: TArray<string>;
begin	  
  ss := '123,456.,789,215'.Split([',','.'], 3, ExcludeEmpty);
  // Результат: ss = ('123', '456')
end;


Split(const Separator: array of string; Count: Integer; Options: TStringSplitOptions)

Разделяет текущую строку на массив строк TArray<string> используя в качетсве разделителей строки из массива Separator. Options — условия разделения: None и ExcludeEmpty — исключать пустые.

var
  ss: TArray<string>;
begin
  ss := 'param1 = 2 and param2 = 1 and param3 = 3'.Split(['and'], 2, ExcludeEmpty);
  // Результат: ss = ('param1 = 2 ', ' param2 = 1 ')
end;


StartsWith(const Value: string)

Сравнивает начало текущей строки со строкой Value. Возвращает True при совпадении.

begin
  'Some string'.StartsWith('Some'); // Вернет True
end;


StartsWith(const Value: string; IgnoreCase: Boolean)

Сравнивает начало текущей строки со строкой Value. С учетом регистра при IgnoreCase = False, и без учета при IgnoreCase = True. Возвращает True при совпадении.

begin
  'Some string'.StartsWith('some', False); // Вернет False
  'Some string'.StartsWith('some', True); // Вернет True
end;


Substring(StartIndex: Integer)

Возвращает часть текущей строки начиная с позиции StartIndex и до конца.

var
  s: string;
begin
  s := 'Some string'.Substring(3);
  // Результат: s = 'e string' 
end;


Substring(StartIndex: Integer; Length: Integer)

Возвращает часть текущей строки начиная с позиции StartIndex, количеством Length символов.

var
  s: string;
begin
  s := 'Some string'.Substring(3,5);
  // Результат: s = 'e str' 
end;


ToCharArray

Преобразует текущую строку в массив символов TArray<Char>.

var
  a: TArray<Char>;
begin
  a := 'Some string'.ToCharArray;
  // Результат: a = ('S', 'o', 'm', 'e', ' ', 's', 't', 'r', 'i', 'n', 'g')
end;	


ToCharArray(StartIndex: Integer; Length: Integer)

Преобразует текущую строку, начиная с позиции StartIndex, количеством Length в массив символов TArray<Char>.

var
  a: TArray<Char>;
begin
  a := 'Some string'.ToCharArray(3,4);
  // Результат: a = ('e', ' ', 's', 't')
end;	


ToLower

Переводит все символы текущей строки в нижний регистр.

var
  s: string;
begin
  s := 'Some string'.ToUpperInvariant;
  // Результат: s = 'some string';
end;	


ToLowerInvariant

Переводит все символы текущей строки в нижний регистр используя UTF-16.

var
  s: string;
begin
  s := 'Some string'.ToUpperInvariant;
  // Результат: s = 'some string';
end;	


ToUpper

Переводит все символы текущей строки в верхний регистр.

var
  s: string;
begin
  s := 'Some string'.ToUpperInvariant;
  // Результат: s = 'SOME STRING';
end;	


ToUpperInvariant

Переводит все символы текущей строки в верхний регистр используя UTF-16.

var
  s: string;
begin
  s := 'Some string'.ToUpperInvariant;
  // Результат: s = 'SOME STRING';
end;	


Trim

Удаляет пробелы из начала и конца текущей строки.

var
  s: string;
begin
  s := '  Some string    '.Trim;
  // Результат: s = 'Some string';
end;	


Trim(const TrimChars: array of Char)

Удаляет символы, указанные в массиве TrimChars из начала и конца текущей строки.

var
  s: string;
begin
  s := 'String helper functions'.Trim(['s','S','t','n']);
  // Результат: s = 'ring helper functio';
end;


TrimEnd(const TrimChars: array of Char)

Удаляет символы, указанные в массиве TrimChars из конца текущей строки.

var
  s: string;
begin
  s := 'String helper functions'.TrimStart(['s','t','r']);
  // Результат: s = 'String helper function';
end;


TrimStart(const TrimChars: array of Char)

Удаляет символы, указанные в массиве TrimChars из начала текущей строки.

var
  s: string;
begin
  s := 'String helper functions'.TrimStart(['S','t','r']);
  // Результат: s = 'ing helper functions';
end;


Chars[Index: Integer]

Свойство вернет символ с позицией Index из текущей строки.

begin
  'String helper functions'.Chars[7]; //Вернет 'h'
end;


Length

Возвращает длину текущей строки.

begin
  'String helper functions'.Length; // Вернет 23
end;
Статья добавлена в Delphi. Добавить ссылку в закладки.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *