在 Match 中§
有关方法 chars 的主要文档,请参阅上下文
method chars()
返回匹配字符串中的字符数,如果没有匹配则返回 0。
返回与 .Str.chars
相同的值。
在 Cool 中§
有关例程 chars 的主要文档,请参阅上下文
multi chars(Cool )multi chars(Str )multi chars(str --> int)method chars(--> Int)
将调用者(或以子例程形式,其参数)强制转换为 Str
,并返回字符串中的字符数。请注意,在 JVM 上,您当前获得的是代码点而不是字素。
say 'møp'.chars; # OUTPUT: «3»say 'ã̷̠̬̊'.chars; # OUTPUT: «1»say '👨👩👧👦🏿'.chars; # OUTPUT: «1»
如果字符串是本机的,则字符数也将作为本机 int
返回。
字素是用户可见的字符。也就是说,这是用户认为的“字符”。
字素可以包含多个代码点。通常情况下,当涉及到 Prepend
或 Extend
字符(也称为组合字符)时,字素和代码点的数量会有所不同,但还有许多其他情况下也可能发生这种情况。另一个例子是 \c[ZWJ]
(零宽连字)。
您可以检查字符的 Grapheme_Cluster_Break
属性,以了解它的行为方式。
say ‘ã̷̠̬̊’.uniprops(‘Grapheme_Cluster_Break’); # OUTPUT: «(Other Extend Extend Extend Extend)»say ‘👨👩👧👦🏿’.uniprops(‘Grapheme_Cluster_Break’); # OUTPUT: «(E_Base_GAZ ZWJ E_Base_GAZ ZWJ E_Base_GAZ ZWJ E_Base_GAZ E_Modifier)»
您可以在Unicode 标准中阅读有关字素的更多信息,Raku 严格遵循该标准,使用一种称为NFG,标准化字素的方法来有效地表示它们。
在角色 Blob 中§
有关方法 chars 的主要文档,请参阅上下文
method chars(Blob:)
抛出 X::Buf::AsStr
,其中 chars
作为有效负载。
在 Str 中§
有关例程 chars 的主要文档,请参阅上下文
multi chars(Cool --> Int)multi chars(Str --> Int)multi chars(str --> int)multi method chars(Str: --> Int)
返回字符串中以字素表示的字符数。在 JVM 上,这当前会错误地返回代码点的数量。