Kaynağa Gözat

[commons] new string and array methods

Exilon 4 yıl önce
ebeveyn
işleme
381ed86da5
1 değiştirilmiş dosya ile 41 ekleme ve 5 silme
  1. 41 5
      Quick.Commons.pas

+ 41 - 5
Quick.Commons.pas

@@ -1,13 +1,13 @@
 { ***************************************************************************
 
-  Copyright (c) 2016-2020 Kike Pérez
+  Copyright (c) 2016-2021 Kike Pérez
 
   Unit        : Quick.Commons
   Description : Common functions
   Author      : Kike Pérez
   Version     : 2.0
   Created     : 14/07/2017
-  Modified    : 01/01/2021
+  Modified    : 02/06/2021
 
   This file is part of QuickLib: https://github.com/exilon/QuickLib
 
@@ -368,10 +368,14 @@ type
   function CommaText(aList : TStringList) : string; overload;
   //returns a real comma separated text from array of string
   function CommaText(aArray : TArray<string>) : string; overload;
-  //returns a string CRLF from array of string
-  function ArrayToString(aArray : TArray<string>) : string;
+  //returns a string CRLF separated from array of string
+  function ArrayToString(aArray : TArray<string>) : string; overload;
+  //returns a string with separator from array of string
+  function ArrayToString(aArray : TArray<string>; aSeparator : string) : string; overload;
   //converts TStrings to array
-  function StringsToArray(aStrings : TStrings) : TArray<string>;
+  function StringsToArray(aStrings : TStrings) : TArray<string>; overload;
+  //converts string comma or semicolon separated to array
+  function StringsToArray(const aString : string) : TArray<string>; overload;
   {$IFDEF MSWINDOWS}
   //process messages on console applications
   procedure ProcessMessages;
@@ -1667,6 +1671,7 @@ var
   value : string;
   sb : TStringBuilder;
 begin
+  Result := '';
   if High(aArray) < 0 then Exit;
   sb := TStringBuilder.Create;
   try
@@ -1675,6 +1680,30 @@ begin
       sb.Append(value);
       sb.Append(#10#13);
     end;
+    Result := sb.ToString;
+  finally
+    sb.Free;
+  end;
+end;
+
+function ArrayToString(aArray : TArray<string>; aSeparator : string) : string;
+var
+  value : string;
+  sb : TStringBuilder;
+  isfirst : Boolean;
+begin
+  Result := '';
+  if High(aArray) < 0 then Exit;
+  isfirst := True;
+  sb := TStringBuilder.Create;
+  try
+    for value in aArray do
+    begin
+      if isfirst then isfirst := False
+        else sb.Append(aSeparator);
+      sb.Append(value);
+    end;
+    Result := sb.ToString;
   finally
     sb.Free;
   end;
@@ -1692,6 +1721,13 @@ begin
   end;
 end;
 
+function StringsToArray(const aString : string) : TArray<string>;
+var
+  item : string;
+begin
+  for item in aString.Split([';',',']) do Result := Result + [item.Trim];
+end;
+
 { TCounter }
 
 procedure TCounter.Init(aMaxValue : Integer);