replacestring中的换行符C#

我怎样才能取代C#中的string中的换行符?

使用Environment.NewLinereplace

 myString = myString.Replace(System.Environment.NewLine, "replacement text") 

正如其他职位所述,如果string来自另一个环境(OS),那么你需要replace新的行控制字符的特定环境的实现。

到目前为止发布的解决scheme或者只是replaceEnvironment.NewLine或者如果replacestring包含换行符,则会失败,因为它们会调用string.Replace多次。

这里有一个解决scheme,它使用一个正则expression式来完成所有三个replace,只需一个string就可以完成。 这意味着replacestring可以安全地包含换行符。

 string result = Regex.Replace(input, @"\r\n?|\n", replacementString); 

为了扩展The.Anyi.9的答案,你还应该知道一般使用的不同types的换行符 。 取决于你的文件起源地,你可能想看看确保你抓住所有的select…

 string replaceWith = ""; string removedBreaks = Line.Replace("\r\n", replaceWith).Replace("\n", replaceWith).Replace("\r", replaceWith); 

应该让你去…

当我想为string插入一个换行符时,我将使用Environment.Newline,但不要从string中删除所有换行符。

根据你的平台,你可以有不同types的换行符,但是即使在同一个平台内,也经常使用不同types的换行符。 特别是在处理文件格式和协议时。

 string ReplaceNewlines(string blockOfText, string replaceWith) { return blockOfText.Replace("\r\n", replaceWith).Replace("\n", replaceWith).Replace("\r", replaceWith); } 

如果你的代码应该运行在不同的环境中,我会考虑使用Environment.NewLine常量,因为它特别是在特定环境中使用的newline

 line = line.Replace(Environment.NewLine, "newLineReplacement"); 

但是,如果您从源自另一个系统的文件中获取文本,这可能不是正确的答案,您应该replace为在另一个系统上使用的任何换行常数。 它通常是\n\r\n

不要忘记,replace不会在string中进行replace,而是返回一个replace字符的新string。 以下将删除换行符(而不是replace它们)。 如果用别的东西代替它们,可能会用@Brian R. Bondy的方法,或许用一个扩展方法来包装。 请记得在调用Replace或提供的扩展方法之前先检查空值。

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

作为扩展方法:

 public static class StringExtensions { public static string RemoveLineBreaks( this string lines ) { return lines.Replace( "\r", "").Replace( "\n", "" ); } public static string ReplaceLineBreaks( this string lines, string replacement ) { return lines.Replace( "\r\n", replacement ) .Replace( "\r", replacement ) .Replace( "\n", replacement ); } } 

我需要用实际的回车符和换行符replace\r\n ,并用实际的制表符replace\t 。 所以我想出了以下几点:

 public string Transform(string data) { string result = data; char cr = (char)13; char lf = (char)10; char tab = (char)9; result = result.Replace("\\r", cr.ToString()); result = result.Replace("\\n", lf.ToString()); result = result.Replace("\\t", tab.ToString()); return result; } 

为了确保所有可能的换行方式(Windows,Mac和Unix)被replace,你应该使用:

 string.Replace("\r\n", "\n").Replace('\r', '\n').Replace('\n', 'replacement'); 

并且按照这个顺序,当你find一些行尾字符的组合时,不要多余的换行符。

使用.Replace()方法

 Line.Replace("\n", "whatever you want to replace with"); 

最好的方法来安全地取代linebreaks

 yourString.Replace("\r\n","\n") //handling windows linebreaks .Replace("\r","\n") //handling mac linebreaks 

这应该产生一个string只有\ n(如换行)作为linebreaks。 这个代码也是有用的,以修复混合linebreaks。

 var answer = Regex.Replace(value, "(\n|\r)+", replacementString); 

为什么不兼得?

 string ReplacementString = ""; Regex.Replace(strin.Replace(System.Environment.NewLine, ReplacementString), @"(\r\n?|\n)", ReplacementString); 

注意:用inputstring的名称replacestrin

由于新行可以用\n\r\r\n分隔,所以首先我们用\nreplace\r\r\n \n ,然后才分割数据string。

以下几行应该转到parseCSV方法:

 function parseCSV(data) { //alert(data); //replace UNIX new lines data = data.replace(/\r\n/g, "\n"); //replace MAC new lines data = data.replace(/\r/g, "\n"); //split into rows var rows = data.split("\n"); } 
 string s = Regex.Replace(source_string, "\n", "\r\n"); 

要么

 string s = Regex.Replace(source_string, "\r\n", "\n"); 

取决于你想要走哪条路。

希望它有帮助。