【问题标题】:translate special character in strings翻译字符串中的特殊字符
【发布时间】:2014-03-20 23:16:41
【问题描述】:

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

有没有一种简单的方法可以用实际字符替换所有这些字符串,还是我只需要像下面的示例那样为每个字符手动替换?

手动示例:

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

编辑:

我正在寻找某种方法将字符串视为像这样的转义字符串(即使我知道这不起作用)

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

【问题讨论】:

标签: c# string replace newline


【解决方案1】:

【讨论】:

  • 这很整洁。可能会派上用场。
  • 这正是我想要的。
【解决方案2】:

为什么不直接遍历文档并一次性构建新字符串。节省大量重复搜索和中间分配

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

【讨论】:

  • 但这需要我输入所有可转义的字符作为案例。我正在寻找一种不这样做的方法。我编辑了问题以显示我在寻找什么。
猜你喜欢
  • 1970-01-01
  • 2010-11-16
  • 2021-01-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-18
相关资源
最近更新 更多