测试 System.SysUtils.TStringHelper


大小写转换:

function ToLower: string;

function ToLower(LocaleID: TLocaleID): string;

function ToLowerInvariant: string;

function ToUpper: string;

function ToUpper(LocaleID: TLocaleID): string;

function ToUpperInvariant: string;



class function LowerCase(const S: string): string;

class function LowerCase(const S: string; LocaleOptions: TLocaleOptions): string;

class function UpperCase(const S: string): string;

class function UpperCase(const S: string; LocaleOptions: TLocaleOptions): string;

//--------------------------------------------------------------------------------

var

  str: string;

begin

  str := 'Delphi';

  str := str.ToLower; // delphi

  str := str.ToUpper; // DELPHI

end;



清除两边空格或指定字符:

function Trim: string;

function TrimLeft: string;

function TrimRight: string;

function Trim(const TrimChars: array of Char): string;

function TrimLeft(const TrimChars: array of Char): string;

function TrimRight(const TrimChars: array of Char): string;

//--------------------------------------------------------------------------------

var

  str1, str2: string;

begin

  str1 := '   Delphi 10000   ';



  str2 := str1.TrimLeft;  // 'Delphi 10000   '

  str2 := str1.TrimRight; // '   Delphi 10000'

  str2 := str1.Trim;      // 'Delphi 10000'



  str2 := str1.Trim([' ', '0']); // 'Delphi 1'

end;



字符串对比:

function CompareTo(const strB: string): Integer;



class function Compare(const StrA: string; const StrB: string): Integer;

class function CompareText(const StrA: string; const StrB: string): Integer;

class function Compare(const StrA: string; const StrB: string; LocaleID: TLocaleID): Integer;

class function Compare(const StrA: string; const StrB: string; IgnoreCase: Boolean): Integer;

class function Compare(const StrA: string; const StrB: string; IgnoreCase: Boolean; LocaleID: TLocaleID): Integer;

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

class function Compare(const StrA: string; IndexA: Integer; const StrB: string; IndexB: Integer; Length: Integer; LocaleID: TLocaleID): Integer;

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

class function Compare(const StrA: string; IndexA: Integer; const StrB: string; IndexB: Integer; Length: Integer; IgnoreCase: Boolean; LocaleID: TLocaleID): Integer;

class function CompareOrdinal(const StrA: string; const StrB: string): Integer;

class function CompareOrdinal(const StrA: string; IndexA: Integer; const StrB: string; IndexB: Integer; Length: Integer): Integer;

//--------------------------------------------------------------------------------

var

  str1, str2: string;

  n: Integer;

begin

  str1 := 'ABC 123';

  str2 := 'abc 123';



  n := str1.CompareTo(str2);              // -32



  n := str1.Compare(str1, str2);          // 1

  n := str1.CompareText(str1, str2);      // 0; 相同



  n := str1.Compare(str1, str2, True);    // 0; 不区分大小写

  n := str1.CompareOrdinal(str1, str2);   // -32



  n := str1.Compare(str1, 4, str2, 4, 3); // 0; 只对比后三位

end;



搜索字符串:

function IndexOf(value: Char): Integer;

function IndexOf(const Value: string): Integer;

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

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

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

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

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

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

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



function LastIndexOf(Value: Char): Integer;

function LastIndexOf(const Value: string): Integer;

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

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

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

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

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

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

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

//--------------------------------------------------------------------------------

var

  str: string;

  n: Integer;

begin

  str := 'A1 A2 A3 A4';



  n := str.IndexOf('A');     // 0

  n := str.LastIndexOf('A'); // 9

  n := str.IndexOf('B');     // -1; 没找到



  n := str.IndexOf('A', 1, str.Length - 1);                  // 3

  n := str.LastIndexOf('A', str.Length - 1, str.Length - 1); // 9



  n := str.IndexOfAny(['1', '2', '3', '4']);     // 1

  n := str.LastIndexOfAny(['1', '2', '3', '4']); // 10

end;



是否包含:

function Contains(const Value: string): Boolean;



function StartsWith(const Value: string): Boolean;

function StartsWith(const Value: string; IgnoreCase: Boolean): Boolean;



function EndsWith(const Value: string): Boolean;

function EndsWith(const Value: string; IgnoreCase: Boolean): Boolean;



class function EndsText(const ASubText, AText: string): Boolean;

//--------------------------------------------------------------------------------

var

  str: string;

  b: Boolean;

begin

  str := 'Delphi XE4';



  b := str.Contains('XE'); // True

  b := str.Contains('xe'); // False



  b := str.StartsWith('delphi');       // False

  b := str.StartsWith('delphi', True); // True



  b := str.EndsWith('XE4');            // True



  b := str.EndsText('xe4', str);       // True

end;



添加或解除引号:

function QuotedString: string;

function QuotedString(const QuoteChar: Char): string;



function DeQuotedString: string;

function DeQuotedString(const QuoteChar: Char): string;

//--------------------------------------------------------------------------------

var

  str1, str2: string;

begin

  str1 := 'Delphi';



  str2 := str1.QuotedString;        // 'Delphi'

  str2 := str1.QuotedString('"');   // "Delphi"



  str1 := '"Delphi"';

  str2 := str1.DeQuotedString('"'); // Delphi

end;



适宽处理:

function PadLeft(TotalWidth: Integer): string;

function PadLeft(TotalWidth: Integer; PaddingChar: Char): string;

function PadRight(TotalWidth: Integer): string;

function PadRight(TotalWidth: Integer; PaddingChar: Char): string;

//--------------------------------------------------------------------------------

var

  str: string;

begin

  str := '1';

  str := str.PadLeft(4, '0'); // 0001

end;



插入与删除:

function Insert(StartIndex: Integer; const Value: string): string;



function Remove(StartIndex: Integer): string;

function Remove(StartIndex: Integer; Count: Integer): string;

//--------------------------------------------------------------------------------

var

  str1, str2: string;

begin

  str1 := 'Delphi 4';

  str2 := str1.Insert(7, 'XE'); // Delphi XE4



  str1 := 'Delphi XE4';

  str2 := str1.Remove(6);    // Delphi

  str2 := str1.Remove(7, 2); // Delphi 4

end;



截取:

function Substring(StartIndex: Integer): string;

function Substring(StartIndex: Integer; Length: Integer): string;

//--------------------------------------------------------------------------------

var

  str1, str2: string;

begin

  str1 := 'Delphi XE4';

  str2 := str1.Substring(7);    // XE4

  str2 := str1.Substring(7, 2); // XE

end;



替换:

function Replace(OldChar: Char; NewChar: Char): string;

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

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

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

//--------------------------------------------------------------------------------

var

  str1, str2: string;

begin

  str1 := 'ABC ABC ABC';

  str2 := str1.Replace('A', '*');                 // *BC *BC *BC

  str2 := str1.Replace('A', '*', [rfIgnoreCase]); // *BC ABC ABC

end;



分割:

function Split(const Separator: array of Char): TArray<string>;

function Split(const Separator: array of Char; Count: Integer): TArray<string>;

function Split(const Separator: array of Char; Options: TStringSplitOptions): TArray<string>;

function Split(const Separator: array of string; Options: TStringSplitOptions): TArray<string>;

function Split(const Separator: array of Char; Count: Integer; Options: TStringSplitOptions): TArray<string>;

function Split(const Separator: array of string; Count: Integer; Options: TStringSplitOptions): TArray<string>;

//--------------------------------------------------------------------------------

var

  str: string;

  arr: TArray<string>;

begin

  str := 'A-1,B-2,,,C-3,D-4';



  arr := str.Split([',']);                                   // arr[0] = A-1; Length(arr) = 6

  arr := str.Split([','], TStringSplitOptions.ExcludeEmpty); // 忽略空项; Length(arr) = 4

  arr := str.Split([','], 2);                                // 只提取前 2



  arr := str.Split([',', '-'], ExcludeEmpty); //arr[0] = A; Length(arr) = 8



  arr := str.Split([',,,'], None);            // 分隔符可以是一个字符串数组

end;



连接:

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

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

class function Join(const Separator: string; const Values: IEnumerator<string>): string;

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

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

//--------------------------------------------------------------------------------

var

  S: string;

  str: string;

  strArr: TArray<string>;

begin

  str := 'A1,B2,C3,,,,D4,E5,F6,G7';

  strArr := str.Split([','], ExcludeEmpty);



  str := S.Join('-', strArr);             // A1-B2-C3-D4-E5-F6-G7



  str := S.Join('; ', [1,2,3,4,5]);       // 1; 2; 3; 4; 5



  str := S.Join(',', ['abc', 123, true]); // abc,123,True

end;



类型转换:

function ToBoolean: Boolean;

function ToInteger: Integer;

function ToSingle: Single;

function ToDouble: Double;

function ToExtended: Extended;



class function ToBoolean(const S: string): Boolean;

class function ToInteger(const S: string): Integer;

class function ToSingle(const S: string): Single;

class function ToDouble(const S: string): Double;

class function ToExtended(const S: string): Extended;



class function Parse(const Value: Integer): string;

class function Parse(const Value: Int64): string;

class function Parse(const Value: Boolean): string;

class function Parse(const Value: Extended): string;

//--------------------------------------------------------------------------------

var

  S: string;

  str: string;

  n: Integer;

  b: Boolean;

  f: Double;

begin

  str := S.Parse(123);

  n := str.ToInteger;  // 123

  b := str.ToBoolean;  // True



  str := S.Parse(True);

  b := str.ToBoolean;  // True

  n := str.ToInteger;  // -1



  str := S.Parse(3.14159260000);

  f := str.ToDouble;  //3.1415926

end;



定界符:

function IsDelimiter(const Delimiters: string; Index: Integer): Boolean;

function LastDelimiter(const Delims: string): Integer;

//--------------------------------------------------------------------------------

var

  str: string;

  b: Boolean;

  n: Integer;

begin

  str := 'http://del.cnblogs.com';



  b := str.IsDelimiter(':', 4);  // True

  b := str.IsDelimiter('//', 5); // True



  n := str.LastDelimiter('.');   // 18

  n := str.IndexOf('.');         // 10

end;



空字符串:

const Empty = '';



function IsEmpty: Boolean;



class function IsNullOrEmpty(const Value: string): Boolean;

class function IsNullOrWhiteSpace(const Value: string): Boolean;

//--------------------------------------------------------------------------------

var

  S: string;

  str: string;

  b: Boolean;

begin

  str := '       ';



  b := str.IsEmpty;               // False

  b := S.IsNullOrWhiteSpace(str); // True

end;



String 与 Char:

class function Create(C: Char; Count: Integer): string;

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

class function Create(const Value: array of Char): string;



property Chars[Index: Integer]: Char read GetChars;

property Length: Integer read GetLength;



function CountChar(const C: Char): Integer;



function ToCharArray: TArray<Char>;

function ToCharArray(StartIndex: Integer; Length: Integer): TArray<Char>;



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

//--------------------------------------------------------------------------------

var

  S: string;

  str, str2: string;

  charArr: TCharArray;

  n: Integer;

  c: Char;

begin

  str := 'ABC';

  n := str.Length;   // 3

  c := str.Chars[0]; // A = str[1]



  str := S.Create('A', 7); // AAAAAAA



  charArr := 'ABCDEFG'.ToCharArray;

  str := s.Create(charArr);       // ABCDEFG

  str := S.Create(charArr, 1, 3); // BCD



  charArr := '1234567890'.ToCharArray;

  str := 'ABCDEFG';

  str.CopyTo(1, charArr, 2, 3);

  str := S.Create(charArr);       // 12BCD67890

end;



其他:

function Equals(const Value: string): Boolean;

function GetHashCode: Integer;



class function Equals(const a: string; const b: string): Boolean;

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

class function Copy(const Str: string): string;

//--------------------------------------------------------------------------------



// 用 Equals 不如直接用 = 号

// 用 Copy 不如直接用 :=

// 用 string.Format 不如直接用 Format()



// 总之, 还是有用处的多!


你可能感兴趣的:(String)