gpt4 book ai didi

c# - 正则表达式用要替换的部分中的 "derived"替换所有出现的内容

转载 作者:太空宇宙 更新时间:2023-11-03 19:54:29 25 4
gpt4 key购买 nike

我有来自 RTF 文档的以下行

10 \u8314?\u8805? 0

(明文表示 10 ⁺≥ 0)。您可以看到特殊字符使用 \u 转义,后跟十进制 unicode 和问号(这是在无法显示特殊字符的情况下应该打印的替换字符).我想在 C# 中的字符串变量中包含文本,它等效于以下变量:

string expected = "10 \u207A\u2265 0";

在调试器中,我希望看到变量的值为 10 ⁺≥ 0。因此,我必须用相应的十六进制 unicode(#207A = 8314 和 #2265 = 8805)替换每一次出现。使用正则表达式实现此目的的最简单方法是什么?

最佳答案

代码是:

string str = @"10 \u8314?\u8805? 0";
string replaced = Regex.Replace(str, @"\\u([0-9]+)\?", match => {
string value = match.Groups[1].Value;
string hex = @"\u" + int.Parse(value).ToString("X4");
return hex;
});

这将返回

string line = @"10 \u207A\u2265 0";

所以 \u207A\u2265 不会被转义。

请注意,该值首先转换为数字 (int.Parse(value)),然后转换为固定表示法的 4 位十六进制数 (ToString("X4") )

或者

string replaced = Regex.Replace(str, @"\\u([0-9]+)\?", match => {
string value = match.Groups[1].Value;
char ch = (char)int.Parse(value);
return ch.ToString();
});

这将返回

string line = @"10 ⁺≥ 0";

关于c# - 正则表达式用要替换的部分中的 "derived"替换所有出现的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35340340/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com