正则表达式删除所有重复的字符串并分配给数组

时间:2013-02-28 12:40:04

标签: c# .net regex arrays

我在文件中有以下文字:

  

“SHOP_ORDER001”, “SHOP_ORDER002”, “SHOP_ORDER003”, “SHOP_ORDER004”, “SHOP_ORDER005”

现在我通过读取文件并通过spilled分配给数组来获取值:

 String orderValue = "";
 string[] orderArray;
 orderValue = File.ReadAllText(@"C:\File.txt");
 orderArray = orderValue.Split(',');

但我得到的价值是: enter image description here

我需要数组中的值为“ORDER001”,“ORDER002”,“ORDER003”

4 个答案:

答案 0 :(得分:3)

你看到的\"只是由字符串的调试器可视化器添加的(因为引用是特殊的,需要被转义以免混淆),不要担心它们不在你的{ {1}}。

如果你想删除引号,那么你的数组将是:

SHOP_ORDER001
SHOP_ORDER002
...

只需使用它(使用LINQ):

orderArray

顺便说一下var orderArray = orderValue.Split(',').Select(x => x.Trim('"')); 不是很强大,除非你确定,每个字段都不会包含逗号。

修改
要回答您在评论中添加的要点,如果您需要删除String.Split,请写下:

SHOP_

答案 1 :(得分:3)

使用此正则表达式

var res = Regex.Matches(orderValue, @"(?<=""SHOP_)[^""]+?(?="")");

答案 2 :(得分:1)

你可以用这个:

string[] result = Regex.Split(orderValue, "(?:^\"SHOP_)|(?:\",\"SHOP_)|(?:\"$)");

但是,您必须跳过结果数组中的第一个和最后一个项目,因为它们始终是空字符串。

答案 3 :(得分:-1)

愚蠢的问题,但你为什么不这样做

.Replace("SHOP_", "");