你会如何处理这个简单的字符串解析问题?

时间:2011-05-11 22:53:43

标签: c# string parsing

"\n                                \n                                    Expected:\n                                    \n                                        \n                                            Q4\n                                        \n                                    \n                                    2011\n                                \n                            "

从该字符串中,我需要获得以下内容:

"Expected Q4 2011"

我尝试过以下操作,没有骰子:

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

我得到以下内容(大量的空白是故意的,而不是网站格式化问题。实际上是返回的内容。)

"Expected:                                                                                                                        Q4                                                                                                                2011"

4 个答案:

答案 0 :(得分:10)

用一个空格替换所有空格块:

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

答案 1 :(得分: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);

答案 2 :(得分:0)

尝试

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

假设您确定空格实际上是空格字符。

答案 3 :(得分:0)

如果可以公平地说您希望删除所有非字母数字字符(空格,标点符号和符号字符),则可以使用以下正则表达式:

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

\W\w的倒数,它匹配所有字母数字(0-9,a-z,A-Z)和下划线。