将换行符转换为“\ n”字符串

时间:2016-03-22 18:47:59

标签: c# string newline

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

"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...
        }
    }
}

当程序运行时,我不知道invalid.Value 实际上是什么,但我知道我需要让它将空格字符转换成可读的字符。

3 个答案:

答案 0 :(得分:2)

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

以下是一个例子:

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;
}

您可以这样使用:

String x = "This has\na new line";
Console.WriteLine(x);

String y = escp(x);
Console.WriteLine(y);

对于您的情况,只需使用invalid.Value函数escp加注Console.WriteLine("Invalid character " + escp(invalid.Value));

{{1}}

答案 1 :(得分:1)

这样做。

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

并调用它并添加无效字符或字符串,以根据您的要求进行转换。

答案 2 :(得分:0)

I guess you need use this将“\ n”替换为“”\ n“”。