2012-04-17 108 views
1

如何修整字符串而不是單個字符列表?按字符串修整字符串

我想刪除HTML字符串開頭和結尾的所有 和空格。但方法String.Trim()只有一組字符而不是一組字符串的重載。

+1

將是一個簡單的正則表達式 – 2012-04-17 08:46:40

回答

8

你可以使用HttpUtility.HtmlDecode(String)和使用結果作爲一個輸入String.Trim()

HttpUtility.HtmlDecode on MSDN
HttpServerUtility.HtmlDecode on MSDN(一個包裝就可以通過訪問Page.Server屬性)

string stringWithNonBreakingSpaces; 
string trimmedString = String.Trim(HttpUtility.HtmlDecode(stringWithNonBreakingSpaces)); 

注:這soluti on會解碼輸入中的所有HTML字符串。

+0

我也會這麼做:-)如果@brgerner不想解碼並重新編碼字符串,則正則表達式也會這樣做。 – jbl 2012-04-17 08:51:01

+0

是的,我同意我也會走正則表達式路線,甚至是'String.Replace'。讓我添加附註:) – abhilash 2012-04-17 08:54:03

+0

@ABKolan謝謝,這對' '有效(用'HttpUtility.HtmlDecode(String)')。是否還有修剪'\ n'和'\ r'的方法? – brgerner 2012-04-17 09:11:43

2

修剪方法默認從當前字符串中刪除所有前導和尾隨空白字符。

編輯:解決你的問題在您編輯後:

string input = @" &nbsp; <a href='#'>link</a> &nbsp; "; 
Regex regex = new Regex(@"^(&nbsp;|\s)*|(&nbsp;|\s)*$"); 
string result = regex.Replace(input, String.Empty); 

這將刪除所有尾隨和前導空格和&nbsp;。您可以將任何字符串或字符組添加到表達式。如果你要修剪所有選項卡太正則表達式會簡直成了:

Regex regex = new Regex(@"^(&nbsp;|\s|\t)*|(&nbsp;|\s|\t)*$"); 
+0

@brgerner希望從字符串 – 2012-04-17 08:46:12

+0

刪除文本'「 」'而不是'' 我 – Matten 2012-04-17 08:46:14

+0

編輯我的問題:我的第一個版本吞噬了文本:' '。 – brgerner 2012-04-17 08:50:28

1

不知道這是你在找什麼?

string str = "hello &nbsp;"; 
    str.Replace("&nbsp;", ""); 
    str.Trim(); 
+0

這將替換到處,而不是在開始 – 2012-04-17 08:53:42

1

使用正則表達式,爲大衛·赫弗南說。這是比較容易選擇的字符串開頭的所有空格:^(\ |&nbsp;)*

+0

他想在開始和結束時修剪字符串 – 2012-04-17 09:10:38

+0

這只是一個提示,而不是完整的解決方案 – 2012-04-17 09:13:02