Советы

Как разобрать разделенную строку в списке строк

Как разобрать разделенную строку в списке строк


We are searching data for your request:

Forums and discussions:
Manuals and reference books:
Data from registers:
Wait the end of the search in all databases.
Upon completion, a link will appear to access the found materials.

Во многих случаях вам нужно разделить строку на массив строк, используя символ в качестве разделителя. Например, файл CSV (разделенный запятыми) может иметь строку типа «Zarko; Gajic ;; DelphiGuide», и вы хотите, чтобы эта строка была разбита на 4 строки (строки) «Zarko», «Gajic», «» ( пустая строка) и "DelphiGuide" с использованием символа точки с запятой ";" в качестве разделителя.

Delphi предоставляет несколько методов для анализа строки, но вы можете обнаружить, что ни один из них не делает именно то, что вам нужно. Например, метод RTL ExtractStrings всегда использует символы кавычек (одинарные или двойные) для разделителей. Другой подход заключается в использованииРазделитель иDelimitedText свойства класса TStrings, но, к сожалению, в реализации есть ошибка («внутри» Delphi), где символ пробела всегда используется в качестве разделителя.

Единственное решение для анализа строки с разделителями - это написать собственный метод:

Пример строки с разделителями

~~~~~~~~~~~~~~~~~~~~~~~~~
процедура ParseDelimited (const sl: TStrings; постоянное значение: строка; константный разделитель: строка);
вар
дх: целое число;
нс: строка;
TXT: строка;
дельта: целое число;
начать
дельта: = длина (разделитель);
txt: = значение + разделитель;
sl.BeginUpdate;
sl.Clear;
пытаться
тогда как Length (txt)> 0 do
начать
dx: = Pos (разделитель, txt);
ns: = Copy (txt, 0, dx-1);
sl.Add (ns);
txt: = Copy (txt, dx + delta, MaxInt);
конец;
Ну наконец то
sl.EndUpdate;
конец;
конец;
~~~~~~~~~~~~~~~~~~~~~~~~~

Использование (заполняет Memo1):
ParseDelimited (Memo1.lines, 'Жарко; Gajic ;; DelphiGuide', ';')


Смотреть видео: Трюк Excel 1. Объединение ячеек (July 2022).


Комментарии:

  1. Oswald

    Делать ошибки. Напишите мне в личку, обсудите это.

  2. Akinolkis

    Какая красивая мысль

  3. Vudohn

    Вы ошибаетесь. Давайте обсудим. Напишите мне в PM, мы будем общаться.

  4. Vudole

    Конечно. Я согласен.

  5. Shaktibar

    Согласен, это смешное мнение

  6. Sayyar

    Ты неправ. Я могу защитить свою позицию. Напишите мне в личку, мы поговорим.

  7. Salamon

    Доброе утро всем! Вот улыбнулась мне!!!!



Напишите сообщение