c# - 将字符串中的特殊字符转换为 Unicode 十六进制代码?

标签 c# string

例如,我有字符串“Möller”。我想根据此链接中的十六进制代码将其转换为“Möller”:http://www.codetable.net/hex/f6

我想检测所有特殊字符(不是普通的字母数字)并自动转换它们。

到目前为止,我见过的唯一例子只是普通的十六进制。有没有办法获取 Unicode 十六进制代码?

谢谢

最佳答案

您想要匹配除 ASCII 字母之外的任何 Unicode 字母。使用正则表达式很容易实现:

[\p{L}-[A-Za-z]]

请参阅regex demo

在 C# 代码中,将 Regex.Replace 与匹配评估器结合使用,将这些字母转换为十六进制代码。

var s = "Möller";
s  = Regex.Replace(s, @"[\p{L}-[a-zA-Z]]", m => 
    string.Join(string.Empty, m.Value.Select(c=>string.Format("&#x{0:X};", Convert.ToInt32(c))).ToArray()));
Console.WriteLine(s); // => Möller

请参阅C# demo

关于c# - 将字符串中的特殊字符转换为 Unicode 十六进制代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40967540/

相关文章:

c# - VS2019 登录 azure 抛出 : "Object reference not set to an instance of an object."

javascript - 使用 if/else 语句的函数

string - 从值字符串中获取值

C 文件处理查询

javascript - 缩短字符串而不切割 JavaScript 中的单词

c# - 通过应用程序洞察中的端到端事务跟踪 azure redis

c# - 如何证明某个版本的程序内存效率更高?

c# - 在不知道任何数据库的情况下检查 MongoDB 服务器是否已启动

c# - 如何将子类作为参数而不是父类传递?

python - 如何将其写为 1 行返回 Python