2013-03-26 199 views
1

我正在運行一個類,其任務是通過html文檔解析以獲取一些信息。刪除字符串中的字符

在我的條件一個我最終這個字符串:

"\r\n       First Name:" 

我想格式化字符串,這樣我只用了「名」,所以我這樣做:

string firstName = node.InnerText; 

firstName = firstName.Replace(" ", ""); 
firstName = firstName.Replace("\\r", ""); 
firstName = firstName.Replace("\\n", ""); 
firstName.Trim(); 

但我最終得到了和以前一樣的字符串。我對mvc-app頗爲陌生,我認爲這會做這項工作,但事實並非如此。我怎樣才能實現我的目標?

謝謝!

*編輯*

我已經修改我的代碼告訴你什麼是我迄今所做的,因爲我想通知大家,第一線的工作,但沒有休息。我最後有這個字符串:

"\r\nFirst Name:" 
+2

你不必轉義'\ r',使用單個反斜槓,而不是double,同時'firstName.Trim()'會完成這項工作,但是你需要像'firstName = firstName.Trim();' – Habib 2013-03-26 12:35:08

回答

4

您可以使用String.TrimStart

string firstName = "\r\n       First Name:".TrimStart(); 

Demo

String.TrimStart工程因爲Environment.NewLine屬於white-space charactersTrimStart刪除。它返回一個新的字符串(字符串是不可變的),因此您需要使用返回值並將其分配給您的變量。

+0

+1,Tim,我認爲'TrimStart'也會刪除'\ r \ n' – Habib 2013-03-26 12:32:59

+0

這是可行的,謝謝! – hsim 2013-03-26 12:34:09

+0

@Habib:我也是這麼想的,但它不起作用(在ideone上),所以我添加了替換。 – 2013-03-26 12:37:27

6

需要將結果賦回到名字,因爲字符串是不可改變的,string.Replace不改變原字符串相反,它會返回一個新的字符串。

firstName = firstName.Replace(" ", ""); 
firstName = firstName.Replace("\r", ""); 
firstName = firstName.Replace("\n", ""); 

順便說一句,你可以使用string.Trim

string firstName = "\r\n       First Name:"; 
firstName = firstName.Trim(); 

因爲String.Trim將消除所有的白色空間,包括\r從開始\n和字符串的結尾

編輯:

您需要使用單個反斜槓\r不是雙倍\\r

+0

也考慮使用正則表達式,並且不需要使用\ r,\ n或'',只是使用空格「\ s」 – David 2013-03-26 12:28:11

+0

啊!好!謝謝!它適用於空格,但它似乎不適用於\ n和\ r – hsim 2013-03-26 12:28:29

+0

@HerveS,處於編輯中,您需要對\ r和\ n執行相同的操作,但更好的方法是使用string.Trim,檢查更新後的答案 – Habib 2013-03-26 12:30:58

2

Trim()將從字符串的開頭和結尾刪除空格。

string firstName = node.InnerText.Trim(); 

我測試了它在.NET 4.5和Trim()並刪除\r\n

0

試試這個:

firstName = firstName.Trim();