C# 将换行符转换为“\";一串

C# 将换行符转换为“\";一串,c#,string,newline,C#,String,Newline,这可能是个愚蠢的问题,但一些粗略的搜索并没有给我答案。我在字符串中查找无效字符时遇到问题;其中碰巧有换行符、制表符等。但是,当找到一个时,它会打印到控制台;你可以想象 "Character is invalid" 可能会让团队一目了然。那么,在C语言中有没有一种简单快捷的方法可以将换行符转换为字符串文字版本,“\n”,但不会转换非“特殊”的无效字符 以下是我的代码的简化版本: using System.Text.RegularExpressions class Foo { Rege

这可能是个愚蠢的问题,但一些粗略的搜索并没有给我答案。我在字符串中查找无效字符时遇到问题;其中碰巧有换行符、制表符等。但是,当找到一个时,它会打印到控制台;你可以想象

"Character 
 is invalid"
可能会让团队一目了然。那么,在C语言中有没有一种简单快捷的方法可以将换行符转换为字符串文字版本,
“\n”
,但不会转换非“特殊”的无效字符

以下是我的代码的简化版本:

using System.Text.RegularExpressions
class Foo {
    Regex invalidCheck = @"[^\w_ ]";

    public void ParseString(string command) {
        var invalid = invalidCheck.Match(command)
        if (invalid.Success)
            Console.WriteLine("Invalid character " + invalid.Value)
        else {
            // Do things with the string...
        }
    }
}
当程序运行时,我不知道什么是无效的。值,但我知道我需要让它将空白字符转换成可读的字符。

将“\n”替换为“\n”。

将“\n”替换为“\n”。

这样做

s = s.Replace("\r", "\"\\r\"").Replace("\n", "\"\\n\"");
也可以创建扩展方法

    public static class MyExtensions
    {
       public static int WordCount(this String str)
       {
           return str.Replace("\r", "\"\\r\"").Replace("\n", "\"\\n\"");
       }
    }
并调用它,添加尽可能多的无效字符或字符串,以便根据您的要求进行转换。

这样做

s = s.Replace("\r", "\"\\r\"").Replace("\n", "\"\\n\"");
也可以创建扩展方法

    public static class MyExtensions
    {
       public static int WordCount(this String str)
       {
           return str.Replace("\r", "\"\\r\"").Replace("\n", "\"\\n\"");
       }
    }

并调用它,添加尽可能多的无效字符或字符串,以便根据需要进行转换。

您可以使用字典并循环遍历键值对

以下是一个例子:

String escp(String x) {
    Dictionary<String, String> replacements = new Dictionary<String, String>();
    replacements["\n"] = "\\n";
    replacements["\r"] = "\\r";
    replacements["\t"] = "\\t";
    foreach (var i in replacements) {
       if(x.IndexOf(i.Key) > -1)
          x = x.Replace(i.Key, i.Value);
    }
    return x;
}
对于您的情况,只需使用
escp
功能环绕
无效的.Value

Console.WriteLine("Invalid character " + escp(invalid.Value));

您可以使用字典并循环遍历键值对

以下是一个例子:

String escp(String x) {
    Dictionary<String, String> replacements = new Dictionary<String, String>();
    replacements["\n"] = "\\n";
    replacements["\r"] = "\\r";
    replacements["\t"] = "\\t";
    foreach (var i in replacements) {
       if(x.IndexOf(i.Key) > -1)
          x = x.Replace(i.Key, i.Value);
    }
    return x;
}
对于您的情况,只需使用
escp
功能环绕
无效的.Value

Console.WriteLine("Invalid character " + escp(invalid.Value));


请参阅string.Replace或Regex.Replace(literal或regular expression),它将直接用于单个\n->“\n”(请记住斜杠或使用字符串逐字逐句),但更有趣的是不可打印/空格->转义。您的代码是什么样子的?s=s.Replace(“\r”、“\“\\r\”).Replace(“\n”、“\“\\n\”);换行符在代码中不显示为
\n
。这只是一种代码友好的表示——新行是一个单字节,而不是两个字节。您需要在每个特殊字符的基础上执行类似于
s/\n/\\n/
的操作,以将单个换行符转换为两个文字字符。请尝试将“\n”替换为“\\n”请参见string.Replace或Regex.Replace(文字或正则表达式),这将直接用于单个\n->”\n(请记住斜杠或使用字符串逐字逐句),但更有趣的是不可打印/空格->转义。您的代码是什么样子的?s=s.Replace(“\r”,“\“\\r\”)。Replace(“\n”,“\“\\n\”);换行符在代码中不显示为
\n
。这只是一种代码友好的表示方式-换行符是一个单字节,而不是两个字节。您需要在每个特殊字符的基础上执行类似
s/\n/\\n/
的操作,才能将单个换行符转换为两个文字字符。请尝试将“\n”替换为“\\n”感觉上应该有一种方法可以用更少的函数调用来实现这一点,但如果没有其他方法出现,我想这就是答案。此外,如果我没有包括我不知道存在的东西,这种方法会让我盲目。感觉上应该有一种方法可以用更少的函数调用来实现这一点,但如果没有其他方法出现,我会选择让学生回答这个问题。另外,如果我没有包括我没有意识到存在的东西,这个方法会让我变得盲目。我喜欢这个想法,它实际上是在我仔细思考问题的时候出现在我的脑海中的,但就像rashfmnb的回答一样,它可能会让我盲目,也会迫使我定义一个助手方法。我很惊讶没有内置的方法,但我仍然喜欢这个答案。问题来了,你怎么会“不”成为盲人,你必须在每一种情况下定义每一种文字来代替它们。我想我问的问题是一种内置的方法。如果没有什么结果,尽管认为这个答案是接受的。我刚刚写了一个想法,不管你是通过创建一个扩展方法还是通过W来做。在你的代码中写一行完全取决于你想如何使用它想要100%确定你不是盲目的吗?转义序列模式的数量有限。请参阅。换行符和制表符是目前最流行的模式。如果你正在维护一个无效字符的列表,你根本不会盲目的-你已经有了一个离散的li我喜欢这个主意,在我仔细考虑这个问题的时候,它实际上出现在我的脑海中,但就像rashfmnb的回答一样,它可能会让我盲目,也会迫使我定义一个助手方法。我很惊讶没有内置方法,但我仍然喜欢这个回答。问题来了,你怎么会“不”成为盲人,你必须在每一种情况下定义每一种文字来代替它们。我想我问的问题是一种内置的方法。如果没有什么结果,尽管认为这个答案是接受的。我刚刚写了一个想法,不管你是通过创建一个扩展方法还是通过W来做。在你的代码中写一行完全取决于你想如何使用它想要100%确定你不是盲目的吗?转义序列模式的数量有限。请参阅。换行符和制表符是目前最流行的模式。如果你正在维护一个无效字符的列表,你根本不会盲目的-你已经有了一个离散的li你要找的东西中的大多数。只需为每一个都有匹配的替换字符串。