2013-08-28 177 views
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()); 
} 

我面临的问题是我无法在“,”进一步使用“拆分”拆分字符串。我相信这是由于我尝试分割的一系列字符串。

+0

你为什么使用'Store'而不是'store'? – Jerry

+1

这甚至不需要'正则表达式',只要字符串的Split方法就可以。 –

+0

它在我的代码中“存储”本身,当我在这里输入它时是错误的 – Pete

回答

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('"'); 

注意,如果该文件在您引用的字符串不包含逗号,这只会工作。如果他们这样做,你会想用正则表达式来研究。

+0

什么是''''?我认为你的意思是''''' –

+0

@KingKing修正了它。浏览器代码。:) –

8

只要使用String.Split与StringSplitOptions参数:

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

这将需要你的一个字符串,并基于所有换行部分以及全部逗号分割它。我也投入了空格和制表符,尽管如果你不想要它们,你可以将它们删除。

第二个参数是让你不会得到返回的空令牌,例如在'\r''\n'之间。

编辑根据你的第二个文件,你不想删除空格,尽管看起来你可能想删除引号。在这种情况下,你的路线如下。 (我已经将它分成两行只是为了让它看起来更整洁)

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

我在我现在添加的第二个文本文件上试了一下。它改变了输出,因为我需要检查结束时只有一个换行符,这就是我使用正则表达式的原因。 – Pete

+0

@AjitPeter让我们知道你需要什么是获得你所需要的好方法。 :-P在这种情况下,你不想删除空格或制表符,就像提摩西在关于逗号的回答中所提到的那样。看我的编辑。 –

+0

“@scott”你真的很有远见:-)去除“是我正在接下来要做的事情 – Pete