C#最好的方法是如何解析这个String

时间:2015-11-08 09:52:22

标签: c# regex string

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

  

dsadsadsads(-123 | 12)sdakodskoakosdakodsadsayxvmyxcmxcym,§§¨§¨§(-43 | 23)sdadasdas

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

  

-123 | 12

     

-43 | 23

数字始终位于( )

快速的方法是什么,如何获得这个数字。有可能使用一些正则表达式?怎么样?

brute force foor loop?

感谢您的回复。

1 个答案:

答案 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秒。