2012-05-26 55 views
1

是否可以在.NET中使用正则表达式引擎匹配整数数组。 例如:匹配整数数组

var a = new short[] { 1, 2, 3, 4, 5, 6 }; 
var r = new NumericRegex("^/1/2.{2}(/5|/10)/6$"); 
var match = r.Match(a); 

概念上有整数和字符之间没有什么区别,但如何实现它?

UPD:

一个可能的解决方案是将整数转换为Unicode字符。但如何排除正则表达式特殊字符或编码它们?

+0

你到底想干什么? –

+0

所以,你想获得新的数组,其值满足正则表达式? –

+0

为什么不使用LINQ首先将int数组转换为字符串?然后应用你的正则表达式。或者你为什么不把你的int数组升级到List ,然后调用.Where()? –

回答

-1

被修改

这是不可能直接匹配正则表达式int数组。

根据文档MSDN匹配方法需要paremeter为字符串。

你必须int数组首先转换为字符串。 您可以通过以下

var a = new[] { 1, 2, 3, 4, 5, 6 }; 
StringBuilder sb = new StringBuilder(); 
     foreach (var i in a) 
     { 
      sb = sb.Append(i); 
     } 
    var result=sb.ToString(); 
+0

我认为OP正试图找到一个可以帮助你的图书馆。 –

+0

可能是OP试图找到一个库。不管怎样,谢谢。 –

+1

你将如何解析结果字符串“123456”? “123”和“456”?或“12”,“34”和“56”? ;) –

0

int数组转换为字符串,如果我们谈论短裤,前面的回答的这种修改似乎就好了工作:

var a = new short[] { 1, 2, 3, 4, 5, 33, 32, 43, 34 }; 
StringBuilder sb = new StringBuilder(); 
foreach (char i in a) { sb = sb.Append(i); } 
MessageBox.Show(Regex.Match(sb.ToString(), "\u0005\u0021\u0020\\u002B\u0022").Value); 

char i in a,而不是var i in a