如何将字符串与管道分开

Pab*_*ino 3 delphi delphi-xe7

我有一行描述如下:'| 0200 | 4 | SALGADOS ||| KG | 00 | 19051000 |||| 17 |'

我想分隔管道在数据库中保存数据的位置.

我正在错误地使用pos功能.但我得到的数据.

在if中,我将数据插入db.

ReadLn(txt, line);
if True then
  if (Pos('|0200|', line)) = 1 then
  begin
    fArq.Add(line);
  end;
  if (pos('|0000|', line)) = 1 then
  begin
    fArq.Add(line);
  end;
  if (pos('|0005|', line)) = 1 then
  begin
    fArq.Add(line);
  end;
  if (pos('|C460|', line)) = 1 then
  begin
    fArq.Add(line);
    flagCF := True;
  end
  else
  begin
    if flagCF = True then
      if (pos('|C490|', line)) = 0 then
        fArq.Add(line)
      else
        flagCF := False;
  end
Run Code Online (Sandbox Code Playgroud)

Han*_*ans 7

您还可以使用TStringList:

lStringList := TStringList.Create;
lStringList.delimiter := '|';
lStringList.DelimitedText := '|0200|4|SALGADOS|||KG|00|19051000||||17|';
Run Code Online (Sandbox Code Playgroud)

现在,您可以使用lStringList.Items [index]访问每个字段


注意(来自注释):如果字符串中包含空格字符,则设置StrictDelimiter为true以避免将它们视为分隔符.

  • [`SplitString`](http://docwiki.embarcadero.com/Libraries/XE7/en/System.StrUtils.SplitString)也可以在这里工作(不会忽略空字符).或者只是`Line.Split(['|'])`使用字符串帮助器. (3认同)