用字符串c#中的unicode字符替换特殊字符

时间:2017-05-11 14:17:22

标签: c# string

从c#开始,没有看到重复。我想做的是:

此字符串:İntersport 转换为此字符串:\u0130ntersport

我找到了一种在unicode中转换所有内容但不转换特殊字符的方法。

提前感谢您的帮助

编辑:

我尝试过你的解决方案:

 string source = matchedWebIDDest.name;
 string parsedNameUnicode = string.Concat(source.Select(c => c < 32 || c > 255 ? "\\u" + ((int)c).ToString("x4") : c.ToString()));

但我得到:“System.Linq.Enumerable + WhereSelectEnumerableIterator`2 [Syst em.Char,System.Strin g]”

1 个答案:

答案 0 :(得分:4)

您可以尝试使用 Linq

  using System.Linq;

  ...

  string source = "İntersport";

  // you may want to change 255 into 127 if you want standard ASCII table
  string target = string.Concat(source
    .Select(c => c < 32 || c > 255  
       ? "\\u" + ((int)c).ToString("x4") // special symbol: command one or above Ascii 
       : c.ToString()));                 // within ascii table [32..255]

  // \u0130ntersport
  Console.Write(target);

修改: Linq 解决方案:

  string source = "İntersport";

  StringBuilder sb = new StringBuilder();

  foreach (char c in source) 
    if (c < 32 || c > 255)
      sb.Append("\\u" + ((int)c).ToString("x4"));
    else
      sb.Append(c);

  string target = sb.ToString();