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

帕拉克(Paurakh Sharma)Humagain

我需要清理一个具有转义字符但不能这样做的字符串。

这是我的测试代码:

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');

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在python中解码部分转义的unicode字符串(混合的unicode和转义的unicode)?

如何用正确的 unicode 字符替换转义的 unicode 字符?

如何在Vim的:s ///替换字符串中使用Unicode十六进制转义?

如何在Java中替换不可打印的Unicode字符?

如何在Haskell中查找和替换Unicode字符?

如何在Dart中替换字符串中间的空格?

如何在Android中替换JSON字符串中的HTML转义字符

如何在NSString中查找特定的unicode字符并将其替换为非unicode字符?

如何在Groovy中转义特殊字符,不包括unicode

如何在Ruby中执行字符串替换而不进行反斜杠转义

如何在 xargs 中的 bash 中转义字符串替换功能?

如何在bash命令替换中转义单引号字符

如何在字符串替换脚本中正确转义'='?

如何在输出中获取转义字符'\\\\'

如何在Java中打印转义字符?

如何在JAXB中的转义xml上转义特殊字符

如何从Python2.x中的Unicode字符串中删除转义字符(转义Unicode字符)?

如何通过解析转义字符串在 Haskell 中组成未转义的 Unicode 字符串?

如何在python中转义UNICODE字符串(以javascript转义)

如何在JSON.NET中对Unicode进行转义

如何在Python中解码转义的unicode javascript代码?

如何在 Python3 中编码/转义 unicode 文本?

如何在SQL中处理Unicode替换字符(0xFFFD / 65533)

如何在Haskell中将Unicode转义序列转换为Unicode字符串

蟒蛇; 如何用各自的“真实” utf-8替换转义的非unicode字符

如何在Spark中替换转义的换行符

如何在Java字符串中添加转义字符?

如何从python(3)中的unicode字符串打印unicode转义序列?

如何解码转义的Unicode字符?