我有以下问题:我有这样的文字(超过200行):
dsadsadsads(-123 | 12)sdakodskoakosdakodsadsayxvmyxcmxcym,§§¨§¨§(-43 | 23)sdadasdas
我想从这样的文字中获取数字:
-123 | 12
-43 | 23
数字始终位于(
)
。
快速的方法是什么,如何获得这个数字。有可能使用一些正则表达式?怎么样?
或brute force
foor loop?
感谢您的回复。
答案 0 :(得分:1)
您可以将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);
我的控制台输出。大约0.001
秒。