在Delphi中,可以使用AnsiStrings
或SysUtils
单元中的函数来实现字符串分割。下面是两种常用的方法:
1.AnsiStrings
单元的ExtractStrings
函数
ExtractStrings
函数可以将一个字符串按照指定的分隔符割成多个字符串,并将这些子字符串存在一个字符串列表中。使用方法如下:
uses
AnsiStrings;
var
StrList: TStringList;
begin
StrList := TStringList.Create;
try
ExtractStrings([';'], [], PChar('Delphi;is;awesome'), StrList);
// StrList 中的内容为 'Delphi', 'is', 'awesome'
finally
StrList.Free;
end;
end;
在上面的示例中,ExtractStrings
函数的第一个参数是一个字符数组,用于指分隔符。第二个参数是一个字符数组,用于指定特殊字符,例如引号和括号。第三个参数是要分割的字符串。最后一个参数是一个字符串列表,用于存储分割后的子字符串。
2. 使用SysUtils
单元中的SplitString
函数
SplitString
函数可以将一个字符串按照指定的分隔符分割成多个子字符串将这些子字符串存储在一个字符串数组中。使用方法如下:
uses
SysUtils;
var
StrArray: TArray<string>;
begin
StrArray := SplitString('Delphi;is;awesome', ';');
//Array 中的内容为 'Delphi', 'is', 'awesome'
end;
在上面的示例中,SplitString
函数的第一个参数是要分割的字符串。第二个参数是一个字符数组,用于指定分隔符。
示例1:使用ExtractStrings
函数分割CSV文件
假设有一个CSV文件,每行包含三个字段,字段之间用逗号分隔。可以使用ExtractStrings
函数将每行分割成三个子字符串,并将这些子字符串存储在一个字符串列表中。示例代码如下:
uses
AnsiStrings;
var
StrList: TStringList;
Line: string;
FileStream: TFileStream;
StreamReader: TStreamReader;
begin
StrList := TStringList.Create;
try
FileStream := TFileStream.Create('data.csv', fmOpenRead);
try
StreamReader := TStreamReader.Create(FileStream);
try
while not StreamReader.EndOfStream do
begin
Line := StreamReader.ReadLine;
ExtractStrings([','], [], PChar(Line), StrList);
// StrList 中的内容为当前行的三个字段
// 处理 StrList 中的数据
StrList.Clear;
end;
finally
StreamReader.Free;
end;
finally
FileStream.Free;
end;
finally
StrList.Free;
end;
end;
在上面的示例中,首先创建一个字符串列表StrList
,然后打开CSV文件并逐行读取文件内容。对每一行,使用ExtractStrings
函数将其分割成三子字符串,并将这些子字符串存储在StrList
中。最后,处理StrList
中的数据并清空StrList
。
示例2:使用SplitString
函数分割URL参数
假设有一个URL,其中包含多个参数,参数之间用&
符号分隔。使用SplitString
函数URL按照&
符号分割成多个子字符串,并将这些子字符串存储在一个字符串数组中。示代码如下:
uses
SysUtils;
var
StrArray: TArray<string>;
URL: string;
Params: TStringList;
I: Integer;
begin
URL := 'http://www.example.com/?name=John&age=30&gender=male';
Params := TStringList.Create;
try
StrArray := SplitString(URL, '&');
for I := 0 to Length(StrArray) - 1 do
begin
Params.Values[ExtractWord(1, StrArray[I], ['='])] := ExtractWord(2, StrArray[I], ['=']);
end;
// Params 中的内容为 'name=', 'age=30', 'gender=male'
// 可以使用 Params.Values['name'] 获取参数值
finally
Params.Free;
end;
end;
在上面的示例中,首先创建一个字符串StrArray
,然后使用SplitString
函数将URL按照&
符号分割成多个子字符串。对于每个子字符串,使用ExtractWord
函数将其分割成参数名和参数值,并将其存储在一个字符串列表Params
中最后,可以使用Params.Values['name']
获取参数值。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:delphi字符串分割 - Python技术站