在 (g)sub 中使用 ascii 字符

问题描述 投票:0回答:1

为了让 gsub 函数通过

R CMD CHECK
,我只需要使用 ASCII 字符。在我的包的一个地方,我使用了破折号,它是非 ASCII 字符,如下所示:

sub("–", "to", x = "–")

这当然有效。

但是,我想在替换中使用 ASCII(或其他)代码,以避免来自

R CMD CHECK
的警告,如下所示:

stringi::stri_enc_toascii("–")
[1] "\032"
 
sub("\\032", "to", x = "–")

这不起作用。

如何匹配ascii格式的字符?

r substitution non-ascii
1个回答
2
投票

这是一个en破折号

短破折号、en规则或坚果破折号——传统上是长破折号宽度的一半。

您可以检查其Unicode表示,如下所示:

as.hexmode(utf8ToInt("–"))
# [1] "2013"

R 采用以下格式的 Unicode 转义序列

‘u2060

\unnnn
u2060’具有给定代码的 Unicode 字符(1--4 十六进制数字)

‘u2060

\Unnnnnnnn
u2060’带有给定代码的Unicode字符(1--8十六进制数字)

在这种情况下,您可以使用其中任何一个,但我倾向于使用大写变体,因为我不需要担心位数。只需将其提供给

sub()
:

sub("\U2013", "to", x = "–")
# [1] "to"
© www.soinside.com 2019 - 2024. All rights reserved.