我有字符串 "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/