翻译字符串中的特殊字符

时间:2014-03-20 23:16:41

标签: c# string replace newline

我有一个从xml文档中读取的程序。在这个xml文档中,一些属性包含特殊字符,如" \ n"," \ t"等。

是否有一种简单的方法可以用实际字符替换所有这些字符串,或者我只需要为每个字符手动执行此操作,如下例所示?

手动示例:

s.Replace("\\n", "\n").Replace("\\t", "\t")...

编辑:

我正在寻找某种方式来处理字符串,就像这样的转义字符串(即使我知道这不起作用)

s.Replace("\\", "\");

2 个答案:

答案 0 :(得分:2)

答案 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();
}