replacestring中的换行符C#
我怎样才能取代C#中的string中的换行符?
使用Environment.NewLine
replace
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
分隔,所以首先我们用\n
replace\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");
取决于你想要走哪条路。
希望它有帮助。