RAD Studio 10.3.3 测试√
TArray 版
/// <summary>
/// 字符串分割
/// </summary>
/// <param name="mStr">被分割的字符串</param>
/// <param name="mDelimiter">分隔标识</param>
/// <returns>数组:TArray[string]</returns>
function mStrSplit(mStr: string; mDelimiter: string): TArray<string>;
var
i, len, count: integer;
mPart: string;
mArr: TArray<string>;
begin
// 字符串的长度
len := Length(mStr);
mPart := '';
count := 0;
// 遍历字符串
for i := 1 to len do
begin
// 如果 第[i]个字符 = 分隔标识符 或者 (是最后一个字符 并且 这个字符 <> 分隔标识符)
if (mStr[i] = mDelimiter) or ((i = len) and (mStr[i] <> mDelimiter)) then
begin
// 计数【返回时数组的长度】
count := count + 1;
// 设置数组长度
SetLength(mArr, count);
// 如果 是最后一个字符 并且 这个字符符 <> 分隔标识符
if (i = len) and (mStr[i] <> mDelimiter) then
// 截取部分 = 上个分隔符之后遍历的部分 + 当前不是分隔符的字符
mPart := mPart + mStr[i];
// 数组[count-1] = 截取部分
mArr[count - 1] := mPart;
// 清空截取部分的临时值
mPart := '';
end
else
begin
// 截取部分 = 上个分隔符之后的截取临时值 + 这个不是分隔符的值
mPart := mPart + mStr[i];
end;
end;
// 遍历完成后返回数组
Result := mArr;
end;
procedure TForm1.Button8Click(Sender: TObject);
var
mStr: string;
mArr: TArray<string>;
begin
mStr := '小印01*小印02*小印03*小印04';
// 调用方法
mArr := mStrSplit(mStr, '*');
// 因为我知道长度,所以就直接打印了
ShowMessage(mArr[0] + #13#10 + mArr[1] + #13#10 + mArr[2] + #13#10 +mArr[3]);
end;
TstringList 版
附加时间:2021年5月1日
procedure StrSplit(const AStr, ADelimiter: string; out AStrList: TStringList);
var
i, mLen: Integer;
mPart: string;
begin
mLen := Length(AStr);
mPart := '';
for i := 1 to mLen do
begin
if (AStr[i] = ADelimiter) or ((i = mLen) and (AStr[i] <> ADelimiter)) then
begin
if (i = mLen) and (AStr[i] <> ADelimiter) then
mPart := mPart + AStr[i];
AStrList.Add(mPart);
mPart := '';
end
else
mPart := mPart + AStr[i];
end;
end;
一点点笔记,以便以后翻阅。