Ответы:
Это обрежет любую комбинацию возврата каретки и новой строки с конца s
:
s = s.TrimEnd(new char[] { '\r', '\n' });
Изменить : Или, как любезно указывает JP, вы можете записать это более сжато как:
s = s.TrimEnd('\r', '\n');
s = s.TrimEnd()
- как говорится в документации: если trimChars имеет значение null или пустой массив, вместо этого удаляются символы пробела Unicode. - см. String.TrimEnd
'\r'
и '\n'
и ничего, а не символ пробела ' '
, например.
Если вы используете несколько платформ, вам будет безопаснее использовать этот метод.
value.TrimEnd(System.Environment.NewLine.ToCharArray());
Он будет учитывать разные символы новой строки и возврата каретки.
tst.TrimEnd( '\r', '\n' )
- достаточно "безопасен" на практике, поскольку основные EOL [в настоящее время] представляют собой просто разные комбинации \r
и \n
, но alexw - это "правильный" ответ. Позвольте CLR сказать вам, какие символы находятся в новой строке этой платформы. EOL не всегда был комбинацией 0D и
Environment.NewLine
но, похоже, он не обрабатывал случаи, когда \r
присутствовал без \n
. TrimEnd('r','\n')
кажется более надежным в этом случае.
String temp = s.Replace("\r\n","").Trim();
s
исходная строка. (Обратите внимание на заглавные буквы)
replace()
тогда trim()
не излишеством , когда TrimEnd()
может сделать работу в одиночку, или я что - то отсутствует?
s.TrimEnd();
Вышесказанное - это все, что мне нужно, чтобы удалить '\ r \ n' из конца моей строки.
Проголосованный ответ мне кажется неправильным. Во-первых, это не сработало, когда я пытался, во-вторых, если бы это сработало, я ожидал, что s.TrimEnd ('\ r', '\ n') удалит только либо '\ r', либо '\ n' , поэтому мне пришлось бы дважды запустить его по моей строке - один раз, когда '\ n' был в конце, и второй раз, когда '\ r' был в конце (теперь, когда '\ n' был удален) .
Если всегда есть один CRLF, то:
myString = myString.Substring(0, myString.Length - 2);
Если может, а может и не быть, то:
Regex re = new Regex("\r\n$");
re.Replace(myString, "");
Оба из них (по замыслу) удаляют не более одного CRLF. Кешируйте регулярное выражение для повышения производительности.
Это было слишком просто - для меня я отфильтровываю определенные сообщения электронной почты. Я пишу свой собственный фильтр нежелательной почты. С \ r и / или \ n в строке он стирал все элементы вместо фильтрации.
Итак, я только что сделал filter = filter.Remove ('\ n') и filter = filter.Remove ('\ r'). Я делаю свой фильтр таким образом, чтобы конечный пользователь мог использовать Блокнот для непосредственного редактирования файла, поэтому неизвестно, где эти символы могут встраиваться - это может быть что-то иное, кроме как в начале или в конце строки. Так что удаление их всех делает свое дело.
Все остальные записи работают, но удалить может быть проще всего?
Я узнал немного больше о Regex из этого поста - довольно крутая работа с его использованием здесь.
filter = filter.Remove('\n').Remove('\r');
Я использую много стирающего уровня
String donen = "lots of stupid whitespaces and new lines and others..."
//Remove multilines
donen = Regex.Replace(donen, @"^\s+$[\r\n]*", "", RegexOptions.Multiline);
//remove multi whitespaces
RegexOptions options = RegexOptions.None;
Regex regex = new Regex("[ ]{2,}", options);
donen = regex.Replace(donen, " ");
//remove tabs
char tab = '\u0009';
donen = donen.Replace(tab.ToString(), "");
//remove endoffile newlines
donen = donen.TrimEnd('\r', '\n');
//to be sure erase new lines again from another perspective
donen.Replace(Environment.NewLine, "");
и теперь у нас есть чистая строка
varName.replace(/[\r\n]/mg, '')
Это то, что мне нужно для работы.
s.Replace("\r","").Replace("\n","")