[QString] 新增字符串的分隔函数 SplitByStrW 和 StrBeforeW 函数

【更新说明】

StrBeforeW 用于解析特定字符串前的子串,比如字符串”Tommy and Jommy”,我们要取 ” and” 前的字符串,那么,用StrBeforeW就可以轻松的分割出来。

SplitByStrW 调用 StrBeforeW 将得到的子串加入到一个列表中,类似的函数SplitTokenW。这些函数提供的目的是简化字符串的分隔,而不必需使用复杂的正则表达式(正则表达式许多人理解起来费劲),一段示例代码:

procedure TForm1.Button1Click(Sender: TObject);
var
  S: String;
begin
  S := 'Jone or Tommy or Marry';
  SplitByStrW(Memo1.Lines, S, ' or ', true);
end;

同样的实现,用正则表达式:

var
  ARegex: TPerlRegex;
begin
  ARegex := TPerlRegex.Create;
  ARegex.Subject := 'Jone or Tommy or Marry';
  ARegex.RegEx := '\sor\s';
  ARegex.Split(Memo1.Lines, MaxInt);
  FreeAndNil(ARegex);
end;

通过循环100万次测试,对于这种不是特别复杂的字符串分隔,SplitByStrW 要快上约一倍左右(954ms vs 1734ms)。

【更新级别】

可选

 

分享到: