String.Replace(char,char)在C#中的方法

如何用空格replace\n

我得到一个空的文字错误,如果我这样做:

 string temp = mystring.Replace('\n', ''); 

String.Replace('\n', '')不起作用,因为''不是有效的字符文字。

如果您使用String.Replace(string,string)覆盖,它应该工作。

 string temp = mystring.Replace("\n", ""); 

用“”replace“\ n”并不会给你想要的结果,这意味着你应该replace的实际上不是“\ n”,而是一些其他的字符组合。

一种可能性是你应该replace的是“\ r \ n”字符组合,它是Windows系统中的换行符。 如果只replace“\ n”(换行符)字符,它将保留“\ r”(回车)字符,该字符仍可能被解释为换行符,具体取决于显示string的方式。

如果string的来源是系统特定的,则应使用该特定的string,否则应使用Environment.NewLine获取当前系统的换行符组合。

 string temp = mystring.Replace("\r\n", string.Empty); 

要么:

 string temp = mystring.Replace(Environment.NewLine, string.Empty); 

这应该工作。

 string temp = mystring.Replace("\n", ""); 

你确定在原始string中有实际的\ n新行吗?

 string temp = mystring.Replace("\n", string.Empty).Replace("\r", string.Empty); 

显然,这样做既去除了\ n和\ r,就像我知道如何去做一样简单。

如果你使用

 string temp = mystring.Replace("\r\n", "").Replace("\n", ""); 

那么你将不必担心你的string来自哪里。

在Bytes.com上find :

string temp = mystring.Replace('\n', '\0');// '\0'表示一个空字符

一个警告:在.NET中,换行是“\ r \ n”。 所以如果你从一个文件加载你的文本,你可能不得不使用它而不是“\ n”

编辑>正如samuel在评论中指出的,“\ r \ n”不是.NET特定的,但是是Windows专用的。

怎么样创build这样的扩展方法….

  public static string ReplaceTHAT(this string s) { return s.Replace("\n\r", ""); } 

然后,当你想要replace的地方,你可以做到这一点。

 s.ReplaceTHAT(); 

最好的祝福!

这是你的确切答案…

 const char LineFeed = '\n'; // #10 string temp = new System.Text.RegularExpressions.Regex( LineFeed ).Replace(mystring, string.Empty); 

但是这一个更好…特别是如果你想分割线(你也可以使用它拆分)

 const char CarriageReturn = '\r'; // #13 const char LineFeed = '\n'; // #10 string temp = new System.Text.RegularExpressions.Regex( string.Format("{0}?{1}", CarriageReturn, LineFeed) ).Replace(mystring, string.Empty); 
 string temp = mystring.Replace("\n", " "); 

@gnomixa – 你在评论中没有达到什么意思? 以下在VS2005中适用于我。

如果你的目标是删除换行符,从而缩短string,看看这个:

  string originalStringWithNewline = "12\n345"; // length is 6 System.Diagnostics.Debug.Assert(originalStringWithNewline.Length == 6); string newStringWithoutNewline = originalStringWithNewline.Replace("\n", ""); // new length is 5 System.Diagnostics.Debug.Assert(newStringWithoutNewline.Length == 5); 

如果您的目标是用空格字符replace换行符,并保持string长度相同,请看下面的示例:

  string originalStringWithNewline = "12\n345"; // length is 6 System.Diagnostics.Debug.Assert(originalStringWithNewline.Length == 6); string newStringWithoutNewline = originalStringWithNewline.Replace("\n", " "); // new length is still 6 System.Diagnostics.Debug.Assert(newStringWithoutNewline.Length == 6); 

而且您必须replace单字符string而不是字符,因为“'不是传递给Replace(string,char)的有效字符。

我知道这是一个旧post,但我想添加我的方法。

 public static string Replace(string text, string[] toReplace, string replaceWith) { foreach (string str in toReplace) text = text.Replace(str, replaceWith); return text; } 

用法示例:

 string newText = Replace("This is an \r\n \n an example.", new string[] { "\r\n", "\n" }, "");