使用正则表达式读取序列号并将它们作为List <string> </string>的单个元素放置

时间:2012-01-25 18:55:55

标签: c# regex

我正在解析一个excel文档,一列包含每行的n个序列号,用空格分隔。

样品系列:1108656 1108657 1108658 1108659 1108660 1108661 1108662 1108663 1108664 1108665 1108666

我如何使用正则表达式来分析该字符串并返回List或IEnumerable,其中样本中的每个序列号都是一个单独的元素?

序列号的长度在5到8之间。

我正在使用C#和.Net Regex。

2 个答案:

答案 0 :(得分:3)

如果字符串只是以空格分隔的数字,我建议使用这样的String.Split方法:

string[] mySerialNumbers = searchString.Split(new char[]{' '});

请参阅String.Split的文档。

要将结果设为IEnumerable,您只需创建一个结果为List<string>的{​​{1}},如下所示:

String.Split

编辑:

阅读评论后,Regex方式确实会对输入进行验证,以确保没有其他字符存在,这是一件好事。这方面的正则表达式就像这样简单:

List<string> mySerialNumbers = new List<string>(searchString.Split(new char[]{' '});

正则表达式[0-9] {5,8}表示重复5到8次的任何数字。当然,这个正则表达式非常简单,只会抓住好东西。例如,如果使用1234567 abcd 7654321不会给出任何错误,它将简单地捕获2个数字并默默地忽略这些字母。您可以制作更复杂的正则表达式来进行更好的验证。这可能是正则表达式的一个可靠的起始参考:http://www.mikesdotnetting.com/Article/46/CSharp-Regular-Expressions-Cheat-Sheet

答案 1 :(得分:-1)

可以在这里使用Regex.Split方法

string[] SerialNum = Regex.Split("yourStringVar", " ")