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

Fra*_*ard 1 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()));
Run Code Online (Sandbox Code Playgroud)

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

Dmi*_*nko 5

您可以尝试使用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);
Run Code Online (Sandbox Code Playgroud)

编辑:没有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();
Run Code Online (Sandbox Code Playgroud)