2013-08-28 219 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