perl - 如何反转 Perl 中包含组合字符的字符串?

标签 perl unicode string reverse

我有字符串 "re\x{0301}sume\x{0301}" (打印如下:简历),我想将其反转为 "e\x {0301}muse\x{0301}r" (émusér)。我无法使用 Perl 的 reverse因为它将像 "\x{0301}" 这样的组合字符视为单独的字符,所以我最终得到 "\x{0301}emus\x{0301}er" (́emuser)。如何反转字符串,但仍然尊重组合字符?

最佳答案

您可以使用\X special escape (匹配非组合字符和所有以下组合字符)与 split要制作字素列表(它们之间有空字符串),请反转字素列表,然后 join他们重新聚在一起:

#!/usr/bin/perl

use strict;
use warnings;

my $original = "re\x{0301}sume\x{0301}";
my $wrong    = reverse $original;
my $right    = join '', reverse split /(\X)/, $original;
print "original: $original\n",
      "wrong:    $wrong\n",
      "right:    $right\n";

关于perl - 如何反转 Perl 中包含组合字符的字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1347478/

相关文章:

c++ - 使用 Magick++ 的形态学

python - Python 2.7 解释器在发送到终端之前使用什么编码方案对 Unicode 代码点进行编码?

javascript - jquery/javascript中检查单词是否有零和prepand

Android - unicode 字符显示不正确

Java字符串: Checking for consecutive letters or numbers

java - 如何处理最终字符串?

perl - 在Perl中,创建与程序包同名的子例程是否有害?

perl - 如何基于ssdeep进行聚类?

git svn fetch/rebase 错误 : unable to remap msys-ssl-0. 9.8.dll 与父地址相同——0x678F0000

android - 如何在 Android 上的 HttpPost 中发送 unicode 字符