Dot-Net

String.Split VS。正則表達式拆分?

  • February 19, 2021

如果我有一個帶有基本定界符的定界文本文件(|例如),是否使用 aStringRegexsplit 會有所不同嗎?

我會看到一個與另一個相比有任何性能提升嗎?

我假設Regex.Split如果您有escaped不想拆分的分隔符(\|例如),您會想要使用。

還有其他使用Regex.Splitvs的理由String.Split嗎?

Regex.Split 功能更強大,但對於具有基本分隔符的排列(使用字元串中其他任何地方都不存在的字元),String.Split 函式更容易使用。

就性能而言,您必須創建一個測試並進行嘗試。但是,不要預先優化,除非您知道此功能將成為某些基本流程的瓶頸。

似乎對於簡單的場景string.Split()會更好。我在 Benchmark .NET 中進行了測試

在 .NetCore 2.2.6 上測試:


在 .Net 5.0.101 上測試:


注意:不在同一硬體上執行,因此 dotnet 版本之間的性能相對差異比絕對差異更重要。

考試:

public class RegexVsSplit
{
   private readonly string data = "host:7000";

   public RegexVsSplit()
   {
   }

   [Benchmark]
   public string[] RegexSplit() => Regex.Split(data, ":");

   [Benchmark]
   public string[] Split() => data.Split(':');
}

引用自:https://stackoverflow.com/questions/3601465