从C#中的字符串末尾删除回车符和换行符


Answers:


198

这将从以下末尾清除回车符和换行符的所有组合s

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

编辑:或如JP所指出的那样,您可以更简洁地将其拼写为:

s = s.TrimEnd('\r', '\n');

10
注意TrimEnd声明中的params关键字,它使您传递字符的多个实例而不是数组。 msdn.microsoft.com/en-us/library/w5zay9db(VS.71).aspx
JP Alioto

3
怎么样:s = s.TrimEnd(System.Environment.NewLine.ToCharArray());
ΕГИІИО

4
自v1.0发布以来(十年前),我一直在编写c#。现在,您告诉我有关TrimEnd的信息。h!
s15199d 2012年

7
只是出于兴趣,您真正需要的就是s = s.TrimEnd()-正如文档所述: 如果trimChars为null或为空数组,则会删除Unicode空格字符。-参见String.TrimEnd
Stuart Wood

@StuartWood:...这不是Avik要求的。他专门要求'\r''\n'没有其他要求,' '例如空格字符。
RichieHindle 2013年

31

这应该工作...

var tst = "12345\n\n\r\n\r\r";
var res = tst.TrimEnd( '\r', '\n' );

19

如果使用多个平台,则使用此方法会更安全。

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

它将说明不同的换行符和回车符。


JP的方法- tst.TrimEnd( '\r', '\n' )-因为主要是EOLS [当前]的只是不同的连击是在实践中合理的“安全” \r\n,但alexw的是“正确”的答案。让CLR告诉您此平台的换行符中的字符。 EOL并非一直都是0D和0As的组合
鲁芬2014年

我用Environment.NewLine,但它似乎没有处理情况,其中\r存在无\nTrimEnd('r','\n')在这种情况下似乎更可靠。
2014年

2
可能这实际上是一个跨平台问题,并且dec需要专门删除这两个\ r \ n,而不管系统环境如何。
安德鲁·希尔

12
String temp = s.Replace("\r\n","").Trim();

s是原始字符串。(注意大写)


11
这还将:1)从字符串中间删除\ r \ n,2)从字符串开头删除所有空格字符,以及3)从字符串结尾删除所有空格字符。
RichieHindle

是的,最后我只假设一个/ r / n。在原始帖子中没有提及。我不确定Warrent会以-1票通过
-Crash893

正是我想要的。谢谢。
NotMe 2012年

4
使用replace()trim()不会矫枉过正的时候TrimEnd()单独可以做的工作,还是我失去了一些东西?
2014年

好建议@MattBaker
Crash893

8
s.TrimEnd();

以上就是我需要从字符串末尾删除'\ r \ n'的全部内容。

投票赞成对我来说似乎是错误的。首先,它不工作时,我试过了,其次,如果它没有工作,我会期望s.TrimEnd(“\ r”,“\ n”)将只删除或者一个“\ r”或“\ n” ,因此我必须在字符串上运行两次-一次是在'\ n'结尾时,第二次是在'\ r'结尾时(现在已删除'\ n') 。


4

如果始终有一个CRLF,则:

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

如果可能有或没有,那么:

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

这两种(根据设计)最多将删除一个CRLF。缓存正则表达式以提高性能。


4

对于我们的VBers:

TrimEnd(New Char() {ControlChars.Cr, ControlChars.Lf})

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

3

这太简单了-对我来说,我正在过滤掉某些电子邮件项目。我正在编写自己的自定义电子邮件垃圾邮件过滤器。字符串中有\ r和/或\ n会清除所有项目,而不是进行过滤。

因此,我只做了filter = filter.Remove('\ n')和filter = filter.Remove('\ r')。我正在做过滤器,以便最终用户可以使用记事本直接编辑文件,因此不知道这些字符可能会嵌入到何处-可能不是在字符串的开头或结尾。因此,将它们全部删除即可。

其他条目都可以使用,但是“删除”可能是最简单的?

我从这篇文章中学到了更多关于Regex的知识-在这里使用它非常不错的工作。


看来您可以做filter = filter.Remove('\n').Remove('\r');
约翰·桑德斯

2

我使用很多擦除级别

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

现在我们有干净的一排



By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.