【问题标题】:Replace special character with unicode character in a string c#用字符串c#中的unicode字符替换特殊字符
【发布时间】:2017-05-11 14:17:21
【问题描述】:

从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]”

【问题讨论】:

  • 您可以遍历每个字符并使用此处提供的解决方案:stackoverflow.com/questions/13291339/… 转换字符,然后构建一个新字符串。
  • 我看到了这个,但它会转换我所有的角色......而不仅仅是那些我需要转换的角色
  • 我已经复制并粘贴了您的代码,将matchedWebIDDest.name 更改为"İntersport",添加了Console.Write(parsedNameUnicode);,并且我看到了\u0130ntersport 结果
  • 这很奇怪,它与您合作没有 Linq 解决方案,我想知道为什么...非常感谢您的帮助和耐心
  • 不清楚您所说的“特殊字符”是什么意思。 İ 是至少一种语言字母表中的一个字母。字母表中的字母通常不被称为“特殊”。将字符串中的文本表示更改为可以存储在不使用默认 UTF-8 编码的 C# 源文件中的格式的更大目的是什么?

标签: c# string


【解决方案1】:

你可以试试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();

【讨论】:

  • string 在我的 c# 版本中没有 Select 方法...我应该如何处理?
  • @François Richard:string本身没有Select,但是Linq提供了一个扩展方法SelectIEnumerable&lt;T&gt;string是@ 987654328@)。请务必将using System.Linq; 放在其他usings 中
  • @François Richard:如果你不想使用Linq,你可以在StringBuilder的帮助下构建target字符串,查看我的编辑。
  • 好的,我明白了。但现在它返回“System.Linq.Enumerable+WhereSelectEnumerableIterator`2[System.Char,System.String]”
  • 目标变成上面的字符串=/我做错了什么?
猜你喜欢
  • 2012-01-07
  • 2017-11-26
  • 1970-01-01
  • 1970-01-01
  • 2014-12-07
相关资源
最近更新 更多