Perl Unicode 烹饪书:通过图形反转字符串
℞ 32:通过图形反转字符串
因为字节和字符在 Unicode 中不是同构的——你可能看到用户可见的字符(一个 图形)不一定是一个 Unicode 字符串中的单个码点——每个字符串操作都必须意识到码点和图形之间的区别。
考虑 Perl 内置的 reverse
。通过码点反转字符串会弄乱变音符号,错误地将 crème brûlée 转换为 éel̂urb em̀erc 而不是 eélûrb emèrc;因此,通过图形来反转。
作为一个选项,使用 Perl 的 \X
正则表达式元字符 从字符串中提取图形,然后反转这个列表
$str = join("", reverse $str =~ /\X/g);
作为另一个选项,使用 Unicode::GCString 将字符串视为图形序列,而不是码点
use Unicode::GCString;
$str = reverse Unicode::GCString->new($str);
这两种方法都适用于字符串的任何规范化形式。记住,\X
只有从 Perl 5.12 开始及其之后才是最可靠的。
系列索引:标准前言
下一节:℞ 33:图形中的字符串长度
标签
反馈
这篇文章有什么问题吗?请通过在 GitHub 上打开问题或拉取请求来帮助我们。