2

我正在尝试拆分一个字符串数组,其中每个字符串都有“,”作为分隔符。在使用正则表达式进行换行模式的较早拆分后,我获得了字符串数组。输入来自文本文件,这里是文本文件中的模式。

我的文本文件的内容

"first", "second"
"third", "fourth", "fifth"
"Sixth", "seventh"

第二个文本文件

"Color.auto", "(current == ff) && (current == 00)"
"Color.auto", "(current == ff) ? ((Current > 0) && (current < 10))"

创建在换行符上拆分的字符串数组的代码。

StreamReader sr = new stream reader(file.txt);
String data = sr.ReadToEnd();
String pattern = @"\r\n";
String[] result = regex.split(data, pattern);

foreach(string store in result)
{
  String temp = store.split(",".ToCharArray());
}

我面临的问题是我无法使用“split”进一步拆分“,”上的字符串。我相信这是由于我试图拆分的字符串数组。

4

2 回答 2

8

只需将String.Split与 StringSplitOptions 参数一起使用:

string[] tokens = data.Split(new char[] { '\r', '\n', ',', ' ', '\t' }, StringSplitOptions.RemoveEmptyEntries);

这将获取您的单个字符串并根据所有换行部分以及所有逗号对其进行拆分。我也加入了空格和制表符,但如果你不想要它们,你可以删除它们。

第二个参数是为了避免返回空标记,例如 between '\r'and '\n'

编辑根据您的第二个文件,您不想删除空格,但看起来您可能确实想要删除引号。在这种情况下,您的行将如下所示。(我把它分成两行只是为了让它看起来更整洁。)

char[] delimiters = new char[] { '\r', '\n', ',', '"' };
string[] tokens = data.Split(delimiters, StringSplitOptions.RemoveEmptyEntries);
于 2013-08-28T15:24:41.867 回答
3
//Functional style
var tokens = File.ReadLines(file)
    .SelectMany(line => line.Split(',')) //split lines on commas
    .Select(token => token.Trim(' ')) //remove spaces around tokens
    .Select(token => token.Trim('"')); //remove quotes around tokens

//Query style
var tokens = from line in File.ReadLines(file)
             from token in line.Split(',')
             select token.Trim(' ').Trim('"');

请注意,这仅在文件中引用的字符串不包含逗号时才有效。如果他们这样做,您将需要考虑使用正则表达式。

于 2013-08-28T15:26:44.760 回答