我有一个包含 a 的数据源\u2265,它是显示为单个字符的更大或等号,如下所示:≥但是,当数据到达我的应用程序时,它以\\u2265.我现在不关心为什么\会发生额外的事情。相反,我只想能够将 转换为\\u2265我\u2265的应用程序内部。我尝试了各种字符串操作,例如这些,它们要么有语法问题,要么根本不起作用:disp = dataSource.Replace('\\', '\'); disp = dataSource.Replace("\\", "\");和int x = dataSource.IndexOf("\\u");disp = dataSource.Substring(0, x) + dataSource.Substring(x+1);Substring 技术的部分问题在于\\它被视为单个字符。
2 回答
慕哥6287543
TA贡献1831条经验 获得超10个赞
问题是您的数据源具有\u2265as astring并且没有将其视为char. 如果你string用一个char版本替换这个版本,你会得到你需要的。
data = data.Replace("\\u2265", '\u2265'.ToString());
的原因ToString()是我们可以使用适当的重载Replace。
@Flydog57 提供的更简单的版本:
data = data.Replace("\\u2265", "\u2265");
受@Jimi 启发的通用版本:
Regex r = new Regex(@"\\u[0-9]{4}");
var matches = r.Matches(data);
var uniqueMatches = matches
.OfType<Match>()
.Select(m => m.Value)
.Distinct();
foreach (var m in uniqueMatches)
{
data = data.Replace(m,Regex.Unescape(m));
}
鸿蒙传说
TA贡献1865条经验 获得超7个赞
另一种更通用的选择(但并不总是适用,它可能会干扰字符串内容)是使用Regex.Unescape()对字符串进行转义:
string myString = "\\u2265" + "20180426";
myString = Regex.Unescape(myString);
将打印
≥20180426
- 2 回答
- 0 关注
- 173 浏览
添加回答
举报
0/150
提交
取消