s/// 和 Perl 6 中的组合变音符号
s/// and combined diacritics in Perl 6
问题的另一面。
当我尝试替换组合字符的一部分时,默认情况下 Perl 6 不会拆分它。
my $p_macron = "p" ~ 0x0304.chr;
say $p_macron; # "p̄"
(my $a_macron = $p_macron) ~~ s/p/a/;
say $a_macron; # OOPS, again "p̄"
如何(暂时)关闭此默认设置,以便能够匹配单个 Unicode 符号,而不是组合符号?
这是在 bash
.
中是如何完成的
$ echo p̄ | sed 's/p/a/'
ā
sed
不适用于 Unicode 代码点,它适用于字节,因此当它被赋予 p̄
时,它会看到 0x<0070 0304>
而 Perl 6 正确地将其视为一个字素,并且如此对待它。这意味着 s/p/a/
不会做任何事情,因为 p
不匹配 p̄
.
您本可以尝试 s:ignoremark/p/a/
(:m
),这会给您 a
、
或 s:samemark/p/a/
(:mm
) 这会给你 ā
my $p_macron = "p" ~ 0x0304.chr;
say $p_macron; # "p̄"
(my $a_macron = $p_macron) ~~ s/p/a/;
say $a_macron; # OOPS, again "p̄"
如何(暂时)关闭此默认设置,以便能够匹配单个 Unicode 符号,而不是组合符号?
这是在 bash
.
$ echo p̄ | sed 's/p/a/'
ā
sed
不适用于 Unicode 代码点,它适用于字节,因此当它被赋予 p̄
时,它会看到 0x<0070 0304>
而 Perl 6 正确地将其视为一个字素,并且如此对待它。这意味着 s/p/a/
不会做任何事情,因为 p
不匹配 p̄
.
您本可以尝试 s:ignoremark/p/a/
(:m
),这会给您 a
、
或 s:samemark/p/a/
(:mm
) 这会给你 ā