¿cómo dividir (разделяют) una cadena de caracteres en base ООН delimitador?

Estoy tratando de encontrar una función Delphi para dividir una cadena de entrada en una matriz o Листа de cadenas основа de ООН delimitador. Он encontrado muchas устраивается en Google, pero жабы parecen подросток algún problema o limitación y не он encontrado una que me satisfaga para trabajar, подставляет ella.

Sólo танго que dividir una cadena Комо: 'palabra:doc,txt,docx' en una matriz basada en ':'.

El resultado sería: ['palabra', 'doc,txt,docx'].

¿Alguien tiene una función que realmente trabaje?

Gracias

Pregunta y respuesta исходный: https://stackoverflow.com/q/2625707/255257

2
задан 23.05.2017, 15:39
2 ответа

Ты можешь использовать (целиком) свойства DelimitedText, StrictDelimiter и Delimiter класса TStrings и Ваши потомки, чтобы разделять цепь на основании произвольного delimitador, как ты этого требуешь.

Главным образом идея состоит в том, чтобы конфигурировать Delimitador, в этом случае ':', помещать StrictDelimiter в True чтобы избегать того, чтобы он взял место и другие не годные к печати символы как delimitadores (если бы это был случай).

Дай ему взгляд этому примеру:

program Project28;

{$APPTYPE CONSOLE}

uses
  Classes,
  SysUtils;

procedure Split(Delimiter: Char; Str: string; ListOfStrings: TStrings) ;
begin
   ListOfStrings.Clear;
   ListOfStrings.Delimiter       := Delimiter;
   ListOfStrings.StrictDelimiter := True; // Requere D2006 o superior.
   ListOfStrings.DelimitedText   := Str;
end;


var
   OutPutList: TStringList;
begin
   OutPutList := TStringList.Create;
   try
     Split(':', 'word:doc,txt,docx', OutPutList) ;
     Writeln(OutPutList.Text);
     Readln;
   finally
     OutPutList.Free;
   end;
end.
1
ответ дан 03.12.2019, 23:14

Для Дельфи 7 не функционирует предыдущее, (и чтобы созерцать также случаи, в которых разделитель не Гєnico характер), чтобы отделять цепь в двух типах стоимости, у меня есть следующая процедура:

uses SysUtils;

procedure SepararEnDos(Texto: string; const Separador: string; var V1, V2: string);
var
  i: Integer;
begin
  //Si no hay separador en la primera devuelve el texto
  V1 := Texto;
  V2 := '';
  i := Pos(Separador, Texto);
  if (i > 0) then
  begin
    V1 := Trim(Copy(Texto, 1, i - 1));
    if ((i + Length(Separador) - 1) < Length(Texto)) then
      V2 := Trim(Copy(Texto, i + Length(Separador), Length(Texto)));
   end;
end;

, Для которого они спрашивают llamarГ - в, например, с:

SepararEnDos('palabra:doc,txt,docx', ':', V1, V2);

Надеялся, что он подает его в кому-то...

2
ответ дан 03.12.2019, 23:14
  • 1
    +1 из-за того, что дает обновленный ответ:) – astrojuanlu 02.06.2016, 18:18