3

我在文件中有以下文本:

"SHOP_ORDER001","SHOP_ORDER002","SHOP_ORDER003","SHOP_ORDER004","SHOP_ORDER005"

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

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

但我得到的值为: 在此处输入图像描述

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

4

4 回答 4

3

您看到的\"只是由调试器可视化器添加的字符串(因为引号是一个特殊字符,需要转义以免混淆),不要担心它们不在您的orderArray.

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

SHOP_ORDER001
SHOP_ORDER002
...

只需使用它(使用 LINQ):

var orderArray = orderValue.Split(',').Select(x => x.Trim('"'));

顺便说一句String.Split,除非您确定每个字段永远不会包含逗号,否则它不是很健壮。

编辑
要回答您在评论中添加的观点,如果您需要删除SHOP_,只需写下:

var orderArray = orderValue.Split(',')
    .Select(x => x.Trim('"').Substring("SHOP_".Length));
于 2013-02-28T12:45:28.767 回答
3

使用这个正则表达式

var res = Regex.Matches(orderValue, @"(?<=""SHOP_)[^""]+?(?="")");
于 2013-02-28T12:49:44.207 回答
1

你可以使用这个:

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

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

于 2013-02-28T13:24:11.473 回答
-1

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

.Replace("SHOP_", "");
于 2013-02-28T12:55:34.380 回答