Удаление возврата каретки и новой строки с конца строки в c # - PullRequest
102 голосов
/ 16 мая 2009

Как убрать символ возврата каретки (\r) и символ новой строки (\n) с конца строки?

Ответы [ 11 ]

183 голосов
/ 16 мая 2009

Это обрезает любую комбинацию возврата каретки и перевода строки с конца s:

s = s.TrimEnd(new char[] { '\r', '\n' });

Редактировать : Или, как любезно указывает JP, вы можете записать это более кратко:

s = s.TrimEnd('\r', '\n');
29 голосов
/ 16 мая 2009

Это должно работать ...

var tst = "12345\n\n\r\n\r\r";
var res = tst.TrimEnd( '\r', '\n' );
19 голосов
/ 20 февраля 2013

Если вы используете несколько платформ, то этот метод безопаснее.

value.TrimEnd(System.Environment.NewLine.ToCharArray());

Он будет содержать различные символы новой строки и возврата каретки.

11 голосов
/ 16 мая 2009
String temp = s.replace("\r\n","").trim();

s - исходная строка.

7 голосов
/ 23 апреля 2015
s.TrimEnd();

Вышесказанное - это все, что мне нужно, чтобы удалить '\ r \ n' с конца моей строки.

Мне кажется неправильным ответ. Во-первых, он не работал, когда я пытался, во-вторых, если бы он работал, я ожидал, что s.TrimEnd ('\ r', '\ n') удалит только либо a '\ r' или '\ n', так что мне пришлось бы запустить его по моей строке дважды - один раз, когда '\ n' был в конце, и второй раз, когда '\ r' был в конце (теперь, когда ' \ n 'был удален).

4 голосов
/ 01 октября 2009

Для нас VBers:

TrimEnd(New Char() {ControlChars.Cr, ControlChars.Lf})
4 голосов
/ 16 мая 2009

Если всегда есть один CRLF, то:

myString = myString.Substring(0, myString.Length - 2);

Если оно может иметь или не иметь его, то:

Regex re = new Regex("\r\n$");
re.Replace(myString, "");

Оба из них (по замыслу) будут удалять максимум один CRLF. Кэшируйте регулярное выражение для производительности.

3 голосов
/ 12 января 2013

Это было слишком просто - для меня я отфильтровываю определенные элементы электронной почты. Я пишу свой собственный фильтр нежелательной почты. С \ r и / или \ n в строке он удалял все элементы вместо фильтрации.

Итак, я только что сделал filter = filter.Remove ('\ n') и filter = filter.Remove ('\ r'). Я делаю свой фильтр таким образом, чтобы конечный пользователь мог использовать Блокнот для непосредственного редактирования файла, чтобы не было возможности определить, где эти символы могут встраиваться сами по себе - могут отличаться от начала или конца строки. Так что удаление их всех делает это.

Все остальные записи работают, но Удалить может быть проще всего?

Из этого поста я узнал немного больше о Regex - довольно крутая работа с его использованием здесь.

3 голосов
/ 24 марта 2011
string k = "This is my\r\nugly string. I want\r\nto change this. Please \r\n help!";
k = System.Text.RegularExpressions.Regex.Replace(k, @"\r\n+", " ");
1 голос
/ 15 ноября 2017

Я использую много уровней стирания

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, "");

и теперь у нас чистый ряд

...