我有一个从xml文档中读取的程序。在这个xml文档中,一些属性包含特殊字符,如" \ n"," \ t"等。
是否有一种简单的方法可以用实际字符替换所有这些字符串,或者我只需要为每个字符手动执行此操作,如下例所示?
手动示例:
s.Replace("\\n", "\n").Replace("\\t", "\t")...
编辑:
我正在寻找某种方式来处理字符串,就像这样的转义字符串(即使我知道这不起作用)
s.Replace("\\", "\");
答案 0 :(得分:2)
尝试使用Regex.Unescape()。
官方文件: http://msdn.microsoft.com/en-us/library/system.text.regularexpressions.regex.unescape(v=vs.110).aspx
答案 1 :(得分:0)
为什么不在一次传递中遍历文档并构建新字符串。保存了大量重复的搜索和中间分配
string ConvertSpecialCharacters(string input) {
var builder = new StringBuilder();
bool inEscape = false;
for (int i = 0; i < input.Length ; i++) {
if (inEscape) {
switch (input[i]) {
case 'n':
builder.Append('\t');
break;
case 't':
builder.Append('\n');
break;
default:
builder.Append('\\');
builder.Append(input[i]);
}
else if (input[i] == '\\' && i + 1 < input.Length) {
inEscape = true;
}
else {
builder.Append(input[i]);
}
}
return builder.ToString();
}