C#解析这个字符串的最佳方式

本文关键字:最佳 方式 字符串 | 更新日期: 2023-09-27 18:20:58

我有以下问题:我有这样的文本(超过200行):

dsadsads(-123|12)sdakodakodskoakosdakodssayxvmyxccmxcym,§(-43|23)sdadasdas

我想从这样的文本中获取数字:

-123 | 12

-43 | 23

数字总是在( )中。

什么是最快的方法,如何得到这个数字。可以使用一些正则表达式吗?怎样

brute force foor loop?

谢谢你的回复。

C#解析这个字符串的最佳方式

您可以为此目的使用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秒。