Как бы вы подошли к этой простой задаче разбора строк? - PullRequest
2 голосов
/ 12 мая 2011
"\n                                \n                                    Expected:\n                                    \n                                        \n                                            Q4\n                                        \n                                    \n                                    2011\n                                \n                            "

Из этой строки мне нужно получить следующее:

"Expected Q4 2011"

Я пробовал следующее и не играли в кости:

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

Я получаю следующее (массивные пробелы являются намеренными, а не проблема форматирования сайта. Это фактически то, что возвращается.)

"Expected:                                                                                                                        Q4                                                                                                                2011"

Ответы [ 4 ]

10 голосов
/ 12 мая 2011

Заменить все пробельные блоки одним пробелом:

myString = Regex.Replace(myString, @"\s+", " ").Trim();
7 голосов
/ 12 мая 2011

Есть несколько способов сделать это, но вот короткий путь:

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 голосов
/ 12 мая 2011

Если справедливо сказать, что вы хотите удалить все не алфавитно-цифровые символы (пробелы, знаки пунктуации и символы), вы можете использовать следующее регулярное выражение:

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

\W - обратное\w, что соответствует всем буквенно-цифровым цифрам (0-9, az, AZ) и подчеркиванию.

0 голосов
/ 12 мая 2011

Попробуйте

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

Предполагая, что вы уверены, что пробелы являются действительно пробелами.

...