Відповіді:
Це знизить будь-яку комбінацію повернення перевезення та нових рядків з кінця s
:
s = s.TrimEnd(new char[] { '\r', '\n' });
Редагувати : Або, як люб'язно вказує JP, ви можете написати це більш коротко, як:
s = s.TrimEnd('\r', '\n');
s = s.TrimEnd()
- як говорять документи: Якщо trimChars є нульовим або порожнім масивом, замість нього видаляються символи пробілу Unicode. - див. String.TrimEnd
'\r'
і '\n'
нічого іншого, ' '
наприклад, символу пробілу .
Якщо ви використовуєте кілька платформ, ви безпечніше використовувати цей метод.
value.TrimEnd(System.Environment.NewLine.ToCharArray());
Він буде враховувати різні символи нового рядка та повернення каретки.
tst.TrimEnd( '\r', '\n' )
- є на практиці "безпечним" на практиці, оскільки основні EOL є [на даний момент] просто різними комбінаціями \r
та \n
, але alexw - це "правильна" відповідь. Нехай CLR розповість, які символи є в новому рядку цієї платформи. EOL не завжди був комбо з 0D та 0As
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') видалить або a \ \ r ', або a \ \ 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, "");
і тепер у нас є чистий один ряд
Це те, що я повинен працювати для мене.
s.Replace("\r","").Replace("\n","")