【问题标题】:Insert \u2265 into a C# string将 \u2265 插入 C# 字符串
【发布时间】:2018-12-13 17:06:52
【问题描述】:

我有一个包含\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 技术的部分问题在于 \\ 被视为单个字符。

【问题讨论】:

  • 您的两个屏幕截图显示了完全相同的代码 - 那么您如何看到不同的结果?此外,数据是如何进入您的应用程序的? (基本上,我们需要更多背景信息才能提供帮助。)
  • \ 是一个转义字符,所以当你看到"\\" 时,字符串中实际上只有 1 个 \。
  • 我不确定我是否在关注,只需将字符添加到字符串即可。 See here
  • 我认为minimal reproducible example 可能会有所帮助。
  • @dev1998 您根本无法通过将\\ 替换为\ 来将\\u2265 转换为。检查此stackoverflow.com/questions/9738282/…

标签: c# string char


【解决方案1】:

问题是您的数据源将\u2265 视为string,并且没有将其视为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));
}

【讨论】:

  • 不知道为什么有人投了反对票。这就是我的猜测(根据原始帖子中的少量信息)是问题所在(好吧,通过编辑使其编译)。来自我的 +1。
  • 你可以直接说'\u2265'.ToString(),而不是"\u2265"
  • 我试试这个,待命。
  • 不知道我怎么错过了ToString(),我的错
  • @Flydog57 你是正确的"\u2265"。我会更新
【解决方案2】:

另一个更通用的选项(但并不总是适用,它可能干扰字符串内容)是使用Regex.Unescape() 取消转义字符串:

string myString = "\\u2265" + "20180426";
myString = Regex.Unescape(myString);

将打印

≥20180426

【讨论】:

  • 不错!拼图的最后一块是Unescape。我想不出来!
  • @MikeH 是的,但它可能会与字符串内容混淆。如果内容正是这里显示的内容,它可以工作。
  • 我认为更新我的版本(无耻地向你借用)避免了混乱。不过我要 +1。
  • 我遇到的下一个问题是在您的答案和@MikeH 之间做出决定是否正确。我决定和 MikeH 一起去是因为它寻找独特匹配的方式。然而,我对这两个答案都投了赞成票。感谢所有帮助。
  • 绝对。 @MikeH 做了所有辛苦的工作。无论如何,这是你的问题,你不需要证明你的选择:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-05
  • 1970-01-01
  • 2016-09-12
  • 1970-01-01
相关资源
最近更新 更多