2016-12-02 125 views
3

所以我有一個c#的分配,我需要使用文本文件,逗號和其他標點符號分開單詞。我選擇做這樣的:c#添加標點符號

string Book1 = "@\\..\\Knyga1.txt"; 
string punctuation = " ,.?!;:\""; 
string Read1 = File.ReadAllText(Book1); 
string[] FirstFileWords = Read1.Split(punctuation.ToCharArray()); 

但我碰到的......我的文本文件都應該有問題要像書,所以顯然有將是多行......有沒有添加「輸入密鑰」的方法或者我們稱之爲新事物的東西(對不起我的英文不好)其中一個標點符號?因爲當稍後使用單個單詞時,例如打印出最長的單詞,第2行3開頭的單詞等在控制檯中佔用兩行。

+0

對於記錄「回車鍵」也被稱爲回車或新行 – Fuzzybear

+2

@Fuzzybear在windows它通常是兩者兼而有之。 – juharr

回答

5

只需將\r\n添加到列表中即可。這就是「輸入密鑰」 - 即「Windows操作系統中的新行」,這是Environment.NewLine返回的內容。

string punctuation = " ,.?!;:\"\r\n"; 

\r代表「回車」和\n代表「換行」,它們一起使用時,被稱爲一個「新行」(如上MSDN頁面和其他地方,如this SO answer上解釋)。

此外,還有其他不太常見的「垂直空白」字符(請參閱my question here以供參考)。因此,要完成,我會做到這一點,包括「垂直標籤」,「換」,「下一行」,「行分隔符」和「段落分隔符」:

string punctuation = " ,.?!;:\"\r\n\v\f\u0085\u2028\u2029"; 

Here's a Wikipedia article描述所有這些和其他空白字符。

+0

\ n和\ r究竟有什麼區別?什麼是回車? – BligenN

+2

@BligenN \ n或換行符表示只需沿着一行寫入,\ r或回車則表示轉到行首。所以你需要同時走到下一行的開始。這是一臺打字機的東西。 – juharr

+1

@BligenN - 查看更新。 –

4

,將新行添加到您的組,您需要使用新的線路和回車符:

" ,.?!;:\"\r\n"; 
1

如果你想要把最終的線,你需要\n

1

你可以試試char.IsPunctuation找出所有的標點字符

// scan all the characters an filter out punctuation ones (585): 
string punctuation = string.Concat(Enumerable.Range(0, char.MaxValue) 
    .Select(c => (char)c) 
    .Where(c => char.IsPunctuation(c))); 

你可能需要添加一些其他的字符,這是從技術上講,沒有標點符號的:空間換行符回車

string punctuation = " \r\n" + 
    string.Concat(Enumerable.Range(0, char.MaxValue) 
    .Select(c => (char)c) 
    .Where(c => char.IsPunctuation(c)));