C#解析这个字符串的最佳方式
本文关键字:最佳 方式 字符串 | 更新日期: 2023-09-27 18:20:58
我有以下问题:我有这样的文本(超过200行):
dsadsads(-123|12)sdakodakodskoakosdakodssayxvmyxccmxcym,§(-43|23)sdadasdas
我想从这样的文本中获取数字:
-123 | 12
-43 | 23
数字总是在(
)
中。
什么是最快的方法,如何得到这个数字。可以使用一些正则表达式吗?怎样
或brute force
foor loop?
谢谢你的回复。
您可以为此目的使用Regex。
string str = "dsadsadsads(-123|12)sdakodskoakosdakodsadsayxvmyxcmxcym,§§¨§¨§(-43|23)sdadasdas";
var matches = Regex.Matches(str, @"'(([-+]?'d+'|[-+]?'d+)')");
foreach (var match in matches)
{
Console.WriteLine(match);
}
性能测试
string str = "dsadsadsads(-123|12)sdakodskoakosdakodsadsayxvmyxcmxcym,§§¨§¨§(-43|23)sdadasdas";
StringBuilder bigstr = new StringBuilder();
for (int i = 0; i < 1000; i++)
{
bigstr.Append(str + "'n");
}
str = bigstr.ToString();
Regex regex = new Regex(@"'(([-+]?'d+'|[-+]?'d+)')");
Stopwatch w = Stopwatch.StartNew();
var matches = regex.Matches(str);
var count = matches.Count;
w.Stop();
Console.WriteLine(w.Elapsed);
在我的控制台中输出。大约CCD_ 5秒。