2011-09-30 192 views
41

我有一個字符串「4,6,8 \ n9,4」分裂基於多個字符的字符串定界符

我想根據拆分此,並且\ n

輸出數組應該是

4 
6 
8 
9 
4 

編輯:

現在我讀字符串從控制檯,當我在控制檯輸入如上一個字符串,在後面的代碼我得到爲"4,6,8\\n9,4"。現在我想分割使用"," and "\\n"。我怎樣才能改變表情?

+0

看'string.Split'。 – carlosfigueira

回答

84

使用string.Split(char [])

string strings = "4,6,8\n9,4"; 
string [] split = strings .Split(new Char [] {',' , '\n' }); 

編輯

嘗試,如果你得到任何不必要的空項下。 String.Split Method (String[], StringSplitOptions)

string [] split = strings .Split(new Char [] {',' , '\n' }, 
           StringSplitOptions.RemoveEmptyEntries); 

EDIT2

這適用於您的更新問題。將所有必需的拆分字符添加到char []

string [] split = strings.Split(new Char[] { ',', '\\', '\n' }, 
           StringSplitOptions.RemoveEmptyEntries); 
+0

我無法使用'.Split(new Char [] {'?='})'工作,但這樣做有助於http://stackoverflow.com/questions/1126915/how-do-i-split-一個字符串按一個的多字符的定界符在-C。很好的答案沒有更多 – CSharper

+1

@CSharper你做錯了。你應該做'.Split(new Char [] {'?','='})' – zdimension

+0

有沒有辦法知道數組中的哪個字符被用來分割字符串? (假設你需要知道這個值?) –

5
var s = "4,6,8\n9,4"; 
var split = s.Split(new char[]{',', '\n'}); 

但是,這是一個欺騙......

編輯:解決意見。

此代碼:

static void Main(string[] args) 
{ 
    var s = "4,6,8\n9,4"; 

    foreach (var a in s.Split(new char[] { ',', '\n' })) 
     System.Diagnostics.Debug.WriteLine(a); 
} 

輸出此:

4 
6 
8 
9 
4 

EDIT:從控制檯讀取輸入是不同的。手動輸入時,\n是不同的。

static void Main(string[] args) 
{ 
    var s = "4,6,8\\n9,4"; 

    foreach (var a in s.Split(new string[] { ",", "\\n" }, StringSplitOptions.RemoveEmptyEntries)) 
     System.Diagnostics.Debug.WriteLine(a); 
} 
+0

你可以有一個馬編輯部分? –

2

你可以做一個string.Replace('\ n',',')後跟string.split(',')嗎?

4
string tosplit = "4,6,8\n9,4"; 
var split = tosplit.Split(new Char [] {',', '\n' }); 

萬一你不打印/看到它正確:

split.ToList().ForEach(Console.WriteLine); 
+0

它給我4 6 8 \\ n9 4 –

+0

@Nithesh Hebri - 它爲我提供了正確的輸出結果。 – manojlds

5

另一種選擇是使用Regex.Split。當分割序列更復雜時,這很有用。例如,如果空間也可以是分割定界符等部分:

"4,6,8 , 9\\n\\n4" 

然後:

using System.Text.RegularExpressions; 
var i = "4,6,8 , 9\n\n4"; 
var o = Regex.Split(i, @"[,\s\n]+"); 
// now o is: 
// new string[] { "4", "6", "8", "9" } 

注意,所使用的正則表達式是「更能接受」 - 它忽略空的「空間」在\ n之間,它會接受「4 6 8 9 4」一樣的 - 所以上面要說明一點:有多種方法來給貓皮。

快樂編碼。