我想确保_content不以NewLine字符结尾:
_content = sb.ToString().Trim(new char[] { Environment.NewLine });
Run Code Online (Sandbox Code Playgroud)
但上面的代码不起作用,因为Trim似乎没有字符串集合的重载参数,只有字符.
从字符串末尾删除Enivronment.Newline的最简单的单线程是什么?
Sim*_*son 243
以下适用于我.
sb.ToString().TrimEnd( '\r', '\n' );
Run Code Online (Sandbox Code Playgroud)
要么
sb.ToString().TrimEnd( Environment.NewLine.ToCharArray());
Run Code Online (Sandbox Code Playgroud)
Jon*_*eet 14
怎么样:
public static string TrimNewLines(string text)
{
while (text.EndsWith(Environment.NewLine))
{
text = text.Substring(0, text.Length - Environment.NewLine.Length);
}
return text;
}
Run Code Online (Sandbox Code Playgroud)
如果有多个换行符,效率会有些低,但它会起作用.
或者,如果你不介意修剪(说)"\r\r\r\r"或者"\n\n\n\n"不仅仅是"\r\n\r\n\r\n":
// No need to create a new array each time
private static readonly char[] NewLineChars = Environment.NewLine.ToCharArray();
public static string TrimNewLines(string text)
{
return text.TrimEnd(NewLineChars);
}
Run Code Online (Sandbox Code Playgroud)
使用框架.ReadLine()方法有如下说法:
一行被定义为一个字符序列,后跟一个换行符("\n"),一个回车符("\ r")或一个回车符后面紧跟一个换行符("\ r \n").返回的字符串不包含终止回车符或换行符.
所以以下方法就可以了
_content = new StringReader(sb.ToString()).ReadLine();
Run Code Online (Sandbox Code Playgroud)
关于什么
_content = sb.ToString().Trim(Environment.NewLine.ToCharArray());
Run Code Online (Sandbox Code Playgroud)
_content = sb.TrimEnd(Environment.NewLine.ToCharArray());
Run Code Online (Sandbox Code Playgroud)
这当然会删除 "\r\r\r\r" 以及 "\n\n\n\n" 和其他组合。在 NewLine 不是 "\n\r" 的“环境”中,您可能会遇到一些奇怪的行为:-)
但是,如果您能接受这个,那么我相信这是删除字符串末尾换行符的最有效方法。