2014-10-05 13 views
0

角色,我有這樣的代碼:輸入C#

while(!sr1.EndOfStream) 
{ 
    radek1 = sr1.ReadLine(); 
    Console.Write(radek1); 
    Console.WriteLine(); 
    string[] split1 = radek1.Split(new char[] { ' ', '???' }); 
} 

我從file.txt讀一個字符串數組,我需要空間,並與進入分裂,所以我想換這些?對於代表的東西輸入

+1

的可能重複[如何在字符串文字中插入換行符?](http:// stackoverflow。com/questions/4085739/how-to-insert-newline-in-string-literal) – Fedor 2014-10-05 16:59:35

回答

5

通過輸入,您可能需要輸入New Line。 在大多數情況下,這將是你在找什麼:

string newLine = Environment.NewLine; //Updated to Sergey Volegov's suggested 

在大多數情況下,Environment.NewLine等於"\r\n",但有時它只是\n所以它是明智的使用Environment.NewLine

\r是回車。
\n是一個新的行。

認爲它是一臺打字機。你需要去回行(\r)的開頭,再往下行(\n

由於事實Environment.NewLine是一個字符串,你會想SplitString s,而不是Char S:

string[] split1 = radek1.Split(new string[] { " ", Environment.NewLine }); 
+3

使用Environment.NewLine而不是「\ r \ n」會更好 – 2014-10-05 16:59:56

+0

你是對的!更新我的回答:) – 2014-10-05 17:01:06

2

使用此:

Environment.NewLine.ToCharArray(); 

正如@Guffa也說,你也可以有:

string[] split1 = radek1.Split(new string[] { " ", Environment.NewLine }, StringSplitOptions.None)); 

第二個根據空格和新行分割。
儘管第一個,分別由\r\n分開。所以對於想要使用第二種方法的正確行爲。

+1

這是正確的。 EOL具有很高的平臺特定性。 – JensG 2014-10-05 17:01:01

+0

我應該把這個放在哪裏? – 2014-10-05 17:21:54

+1

如果'Environment.NewLine'是'「\ r \ n」',那麼在數組上拆分將會拆分爲'\ r' **或**'\ n',這意味着您會從每個換行符中獲得一個額外的空字符串。你必須拆分字符串來處理,而不是字符。 – Guffa 2014-10-05 17:22:41

2

這取決於文件來自哪裏以及它是如何創建的。

如果是在同一系統上創建的,它很可能會使用本地換行符組合爲特定的系統,你可以使用Environment.NewLine常數:

string[] split1 = radek1.Split(new string[] { " ", Environment.NewLine }, StringSplitOptions.None); 

注意Environment.NewLine是一個字符串,可以包含多個字符,因此您需要在字符串上進行拆分,並且該調用需要參數StringSplitOptions,因爲如果沒有它,就不會有過載。

如果文件來自不同的系統(或者是使用不同系統的典型換行符創建的),則需要指定該特定字符串。

string[] split1 = radek1.Split(new string[] { " ", "\r\n" }, StringSplitOptions.None); 

還可以包括最常見的換行符的組合,如果你需要處理的文件來自不同系統的未來:例如,在Windows系統中使用的兩個字符串

string[] split1 = radek1.Split(new string[] { " ", "\r\n", "\n" }, StringSplitOptions.None);