如何在 Dart 中替换 unicode 转义字符

2023-12-03

我需要清理具有转义字符的字符串,但无法这样做。

这是我的测试代码:

test('Replace unicode escape character', () {
    String originalText = 'Jeremiah  52:1\\u201334';
    String replacedText = originalText.replaceAll(r'\\', r'\');
    expect(replacedText, 'Jeremiah  52:1\u201334');
  });

它失败并出现错误:

Expected: 'Jeremiah  52:1–34'
  Actual: 'Jeremiah  52:1\\u201334'
   Which: is different.
          Expected: ... miah  52:1–34
            Actual: ... miah  52:1\\u201334

Unicode 字符和转义字符不会按照您在编写字符串时编写的方式存储 - 它们会转换为自己的值。当您运行以下代码时,这一点很明显:

print('\\u2013'.length); // Prints: 6
print('\u2013'.length);  // Prints: 1

在这里,发生的情况是:第一个存储了以下字符:“\”、“u”、“2”、“0”、“1”和“3”——而后者仅存储“–”。

因此,您尝试通过替换两个斜杠来更改第一个\\带有一个斜杠\不起作用,因为编译器不再转换你的 unicode 转义字符。

但这并不意味着您无法将 unicode 代码转换为 unicode 字符。您可以使用以下代码:

final String str = 'Jeremiah  52:1\\u2013340';
final Pattern unicodePattern = new RegExp(r'\\u([0-9A-Fa-f]{4})');
final String newStr = str.replaceAllMapped(unicodePattern, (Match unicodeMatch) {
  final int hexCode = int.parse(unicodeMatch.group(1), radix: 16);
  final unicode = String.fromCharCode(hexCode);
  return unicode;
});
print('Old string: $str');
print('New string: $newStr');
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Dart 中替换 unicode 转义字符 的相关文章

随机推荐

  • 使用 Visual Studio 或 TFS 在项目之间共享资源(图像/css/js)

    有没有一种有效的方法可以在不同项目之间共享视觉资源 这包括图像 CSS 和 JavaScript 我查看了以下 Stack Overflow 问题 但似乎没有回答这个问题 在 Visual Studio 中的不同项目之间共享 css jav
  • 突出显示一行时是否触发任何事件?

    我创建了一个 ListView 来显示文档列表 然后创建了一个按钮 按钮 A 来执行一些操作 我的要求是我希望按钮状态可以随着所选文档的更改而更改 Fox示例 下图中有三个文档 我希望当我单击Order 00001或Order 00002时
  • 仅从文件的完整路径获取文件名

    我想分割路径 只保存文件名test xls在一个新变量中 namearray C Users z003m Desktop Service Tickets automationscript vbs Newfolder test xls 推荐使
  • Euler 23 在 C# 中:0.2 秒,在 F# 中:30.5 秒。为什么?

    我对这个问题的 F 解决方案不太满意 因为我找不到一个漂亮且快速的解决方案 但这不是这里的问题 问题是 我将解决方案翻译成 C 而且速度很快 就像 相对而言 速度非常快 我不明白为什么 是的 我去过 Reflector C 代码看起来很相似
  • XDebug 真的很慢

    我正在尝试让 XDebug 在我的本地 wamp 安装 Uniform Server 8 上运行 但是当我把xdebug remote enable 1 在我的 php ini 中 这是我的 IDE 使用 xdebug 所必需的 加载页面变
  • WPF 无边框窗口的 DropShadow

    我有一个 WPF 窗口 WindowStyle 设置为 none 有什么方法可以强制这个窗口留下阴影 就像 WindowStyle 不是 none 时得到的阴影一样 我不想将AllowTransparency 设置为true 因为它会影响性
  • 检测 Javascript 中字符串中的重复字母

    用于检测字符串中重复字母的代码 var str paraven4sr var hasDuplicates a zA Z 1 test str alert repeating string hasDuplicates 我正进入 状态 fals
  • 如何在Python中模糊匹配数组列中的项目?

    我有一系列来自 NCAA 的球队名称 以及与其相关的统计数据 学校名称通常会被缩短或完全省略 但名称的所有变体通常都有一个共同元素 例如阿拉巴马州赤潮与赤潮 这些名称全部包含在一个数组中 没有特定的顺序 我希望能够通过模糊匹配来获取团队名称
  • 在“for”循环中读取带有空格、制表符和多个输入文件的完整行

    我看过以下文章 for 环形 它会在出现空格 制表符或换行符等空白时进行分割 为了解决这个问题 我有以下额外的命令 IFS n 但是当我尝试根据以下细节解决上述场景时 我有两个文件 输入1 txt and 输入 txt 在我当前的目录中 b
  • 在 ruamel.yaml 迭代期间获取评论

    当我迭代 YAML 对象时如何获取注释 yaml YAML with open path r as f yaml data yaml load f for obj in yaml data how to get the comments h
  • Wordpress 的 nginx 配置位于同一服务器的 Rails 应用程序的子目录中

    当我尝试访问 example com blog 时 我不断收到 文件未找到 错误 并且在 var log nginx error log FastCGI sent in stderr Primary script unknown while
  • 返回一个随机偶数

    我有以下几种方法 rnd 方法返回两个边界之间的单个随机整数 Create next batch of 55 random numbers void advance random int j1 double new random for j
  • 文件上传控制和 GWT 外观

    我正在编写我的第一个 GWT 项目 我有一个带有标签 文件上传控件和上传按钮的表单 但它们在各种网络浏览器中看起来很糟糕并且差异很大 另外 文件上传控件中的按钮与 GWT 按钮控件的样式不同 另一个问题是 在 Chrome 中 文件选择按钮
  • Android Widget 在更新期间显示奇怪的图像

    我这里有一个奇怪的 我有一台配备 Nextel 的 Motorola i1 运行 Android 1 5 我有一个安卓小部件 当我开始运行更新此小部件的服务时 我看到来自另一个小部件的图像 启动 DC Contact 它在我的小部件的位置显
  • 使用 Newton-Raphson 方法在 C 中求平方根

    在下面的代码中 我想将终止条件替换为 如果猜测平方与x的比率接近1 则while循环应该终止 我尝试了各种表达式 但没有一个能够正确运行代码 有什么建议吗 include
  • R:带有 geom_map 的 ggplot2 返回“x 和单位必须具有长度 > 0”错误,尽管值已转换为因子

    我正在开发一个原始的闪亮应用程序 它将映射来自苏格兰开放数据项目 我制定了 SPARQL 查询 用于生成类似于下面提供的摘录的数据框 dz label overall quantiles S010001 8 S010002 9 我有强化的形
  • 从 XCode 调用本地 HTML 文件时出现问题

    这是我的 WebView 代码 webView loadRequest NSURLRequest requestWithURL NSURL fileURLWithPath NSBundle mainBundle pathForResourc
  • Android SpeechRecognizer 只能在应用程序的主线程中使用

    我正在尝试将一些 Android 语音 API 集成到我的基于 AndEngine 的游戏中 我将代码放在 BaseGame 活动中 但是在运行时出现此错误 05 06 23 51 28 955 错误 AndroidRuntime 553
  • 4D 到 3D 透视投影

    我正在尝试计算 3D 世界中 4D 点的位置 我从 2D 开始 尝试将其扩展到 3D 然后再扩展到 4D 首先 我发现计算直线上二维点的投影位置很容易 Whoops there should be in the first equation
  • 如何在 Dart 中替换 unicode 转义字符

    我需要清理具有转义字符的字符串 但无法这样做 这是我的测试代码 test Replace unicode escape character String originalText Jeremiah 52 1 u201334 String r