这可能是一个愚蠢的问题,但一些粗略的搜索没有给我一个答案。我有一个问题,我在字符串中寻找无效字符;其中恰好是换行符,制表符等。但是,当找到一个时,它会打印到控制台;你可以想象,
"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
实际上是什么,但我知道我需要让它将空格字符转换成可读的字符。
答案 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“”。