2011-05-11 80 views
2
"\n        \n         Expected:\n         \n          \n           Q4\n          \n         \n         2011\n        \n       " 

從該字符串,我需要得到以下幾點:你會如何處理這個簡單的字符串解析問題?

"Expected Q4 2011" 

我已經試過以下和沒有骰子:

myString.Trim().Replace("\n", ""); 

我得到以下(大量的空白是故意的而不是一個網站格式化程序問題。這實際上是返回的內容。)

"Expected:                              Q4                            2011" 
+2

你的'替換'做了它應該做的事,這是刪除換行符。如果您還想刪除空格,則需要在替換中包含該空格,或者對空格執行另一次替換。 – 2011-05-11 22:58:35

回答

10

替換一個空格,空格塊:

myString = Regex.Replace(myString, @"\s+", " ").Trim(); 
+0

非常漂亮! +1 – 2011-05-11 23:04:58

+0

我喜歡這樣 - 甚至比我的方式更短。 – 2011-05-11 23:05:35

7

有幾種方法可以做到這一點,但這裏是一個簡短的方式:

string foo = "\n \n Expected:\n \n \n Q4\n \n \n 2011\n \n "; 
string[] foos = foo.Split(new char[] { ' ', '\n' }, 
          StringSplitOptions.RemoveEmptyEntries); 
string bar = string.Join(" ", foos); 
0

嘗試

var partsSplitByWhitespace = myString.Split(new[] {' ', '\n'}, 
               StringSplitOptions.RemoveEmptyEntries); 
var combinedStringAgain = string.Join(" ", partsSplitByWhitespace); 
var result = combinedStringAgain.Trim(); 

假設你是確定這些空間確實是空間字符。

0

如果它是公平地說,你想刪除所有非字母數字字符(空格,標點符號&符號字符),可以使用下面的正則表達式:

string output = Regex.Replace(@"[\W_]+", myString, " "); 

\W\w倒數,它匹配所有字母數字(0-9,az,AZ)和下劃線。