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

C# C中的String.Replace(char,char)方法#,c#,string,C#,String,如何将\n替换为空空间 如果执行以下操作,则会得到一个空的文字错误: string temp = mystring.Replace('\n', ''); 这应该行得通 string temp = mystring.Replace("\n", ""); string temp = mystring.Replace("\n", ""); 您确定原始字符串中有实际的\n新行吗?字符串。替换('\n','')无效,因为'不是有效的字符文字 string temp = mystring.Replac

如何将
\n
替换为空空间

如果执行以下操作,则会得到一个空的文字错误:

string temp = mystring.Replace('\n', '');
这应该行得通

string temp = mystring.Replace("\n", "");
string temp = mystring.Replace("\n", "");
您确定原始字符串中有实际的\n新行吗?

字符串。替换('\n','')
无效,因为
'
不是有效的字符文字

string temp = mystring.Replace("\n", " ");
如果使用String.Replace(String,String)重写,它应该可以工作

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

一个警告:在.NET中,换行符是“\r\n”。因此,如果要从文件中加载文本,可能必须使用该文件,而不仅仅是“\n”

编辑>正如samuel在评论中指出的那样,“\r\n”不是特定于.NET的,而是特定于windows的。

如果您使用

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

这样您就不必担心字符串来自何处。

创建这样的扩展方法怎么样

 public static string ReplaceTHAT(this string s)
 {
    return s.Replace("\n\r", "");
 }
然后,当你想在任何地方替换它时,你可以这样做

s.ReplaceTHAT();

致以最良好的祝愿

@gnomixa-你在评论中没有取得任何成就是什么意思?以下内容在VS2005中适用于我

如果您的目标是删除换行符,从而缩短字符串,请查看以下内容:

        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);
如果您的目标是用空格字符替换换行符,使字符串长度保持不变,请参见以下示例:

        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);
您必须替换单个字符串而不是字符,因为“”不是传递给替换的有效字符(字符串,字符)

,因为用“”替换“\n”不会得到您想要的结果,这意味着您应该替换的实际上不是“\n”,而是其他一些字符组合

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

如果字符串的源特定于系统,则应使用该特定字符串,否则应使用Environment.NewLine获取当前系统的换行符组合

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


这是你的确切答案

const char LineFeed = '\n'; // #10
string temp = new System.Text.RegularExpressions.Regex(
                  LineFeed
              ).Replace(mystring, string.Empty);
但是这个更好。。。特别是当您尝试拆分线条时(您也可以将其与拆分一起使用)

可在以下网址找到:


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

我知道这是一篇旧文章,但我想添加我的方法

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

显然,这会删除'\n'和'\r',并且非常简单。

我应该添加字符串temp=mystring.Replace(“\n”,”);没有实现任何功能也没关系,但可以使用string.Empty代替“”。它让我感觉更好=)-1,“\r\n”不是来自.NET。它来自Windows,请使用Environment.NewLine查找环境(Windows/Linux/Other)的换行序列。不管怎样,这一点仍然有效。“\n”不一定是换行符,“\n”也不一定是换行符。既然海报上有,就必须推断出这是他们正在寻找的换行符。要使这种推断有效且正确,前提(在本例中,这是海报想要和需要的)也必须正确。如果是这样的话,它就可以正常工作。停止争论\r\n并使用环境。NewLine不应该是mystring.Replace(“\r\n”,”)。Replace(“\n”,”)?如果将\n替换为“”,则“\r\n”将变为“\r”,并且“\r\n”将与任何内容都不匹配。必须匹配,否则您将丢失新行的\r,或者没有正确存储replace返回的值。结果是字符串包含了\r,因此我将两者都替换:
replace(“\n”,”);替换(“\r”和“)@sarsnake可能没有注意到字符串重载使用了双引号。您应该始终使用string.Empty而不是“”好问题(或要点?)。。。别那么直截了当,这就是为什么。;)
String.Empty
vs.
并不重要(或值得争论),但是
someValue==MyStaticValues.somememeaning
vs
someValue==“SomeMeaning”
很重要,值得争论。魔术字符串更难维护,可读性也更差,所以请使用常量和静态值来优雅、表达您的意思。例如,颜色。白色与#FFFFFF。使用正则表达式进行简单替换的开销是多少?它确实同时替换了“\r\n”和“\n”,因此这两种方法都有效(双重替换或更高)太多不必要的复杂性和额外的代码,cilerler.:(
string temp=mystring.Replace(“\n”,string.Empty)。Replace(“\r”,string.Empty);
更快更简单。+1通过建议扩展方法提高可读性和可重用性,但方法的名称可以更具描述性,如ReplaceNewLine()“\0”是NULL而不是空的…>\u>是的,我知道这是旧的,但这是一些危险的信息。我第二次和第三次dten的反驳。“\0”是一个字符。该字符的名称有时被称为NIL,甚至很少被称为“empty char”,但这种使用“empty”的方式会误导和混淆那些不了解更多信息的人。“\0”=字符0与任何其他字符一样是另一个字符。但每个字符都有一个函数。当您需要一个可以视为空字符的字符时,可以使用“\0”。我有时会这样做。但正如dten警告的那样,只有一行回答说这是空字符实际上是“危险信息”。null和empty以及“\0”通常用于表示发送了3个不同的值,这些值不相等(但它们是相关的).null是一个字符串值,本质上表示“my value is missing”或“not here”。empty表示该值存在,但没有字符--其长度为零。而且“\0”不是字符串。字符串可以有一个字符,可以是“\0”或任何其他字符值。但确实有人将“\0”称为NIL字符、null字符或空字符。所以在公司要小心
string temp = mystring.Replace("\n", string.Empty).Replace("\r", string.Empty);