用分隔符分割一串字符,可以方便地取得长字符串中的特定子串。操作过程中需要注意一些问题。
procedure TForm1.Button1Click(Sender: TObject);
var
s: string;
lines: TStringList;
i : integer;
begin
memo1.Clear;
s := '张,雪眉,销售代表,女士,1969/7/2,1994/11/15,永安路 678 号,北京';
memo1.Append('原始字符串:' + s);
lines := TStringList.Create;
lines.Delimiter := ',';
lines.CommaText := s;
memo1.Append('lines.CommaText:' + lines.CommaText);
for i := 0 to lines.Count - 1 do
begin
memo1.Append(intToStr(i) + ':' + lines[i]);
end;
lines.Free;
end;
虽然定义了分隔符为‘,’,但程序遇到空格时也会进行分割:
对于有空格的子串,加上双引号后可以得到正确结果:
procedure TForm1.Button1Click(Sender: TObject);
var
s: string;
lines: TStringList;
i : integer;
begin
memo1.Clear;
s := '张,雪眉,销售代表,女士,1969/7/2,1994/11/15,"永安路 678 号",北京';
memo1.Append('原始字符串:' + s);
lines := TStringList.Create;
lines.Delimiter := ',';
lines.CommaText := s;
memo1.Append('lines.CommaText:' + lines.CommaText);
for i := 0 to lines.Count - 1 do
begin
memo1.Append(intToStr(i) + ':' + lines[i]);
end;
lines.Free;
end;
运行上面程序:
对于excel2013,如果某单元格含有换行符,就是ALT+回车,在保存为csv格式时会自动加上双引号,但是单元格包含空格则不加双引号。