Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 如何删除unicode<;U+;00A6>;从字符串?_R_Regex_Gsub - Fatal编程技术网

R 如何删除unicode<;U+;00A6>;从字符串?

R 如何删除unicode<;U+;00A6>;从字符串?,r,regex,gsub,R,Regex,Gsub,我有一个字符串,比如: q <-"<U+00A6> 1000-66329" 但它并没有移除任何东西。我应该如何做才能只获得1000 66329 如果“始终”是第一个字符,您可以尝试: substring("\U00A6 1000-66B29", 2) 如果R将字符串打印为1000-66329,而不是和Φ1000-66B29,则将被解释为字符串”,而不是unicode字符。然后你可以做: substring("<U+00A6> 1000-66329",9)

我有一个字符串,比如:

q <-"<U+00A6>  1000-66329"

但它并没有移除任何东西。我应该如何做才能只获得
1000 66329

如果“始终”是第一个字符,您可以尝试:

substring("\U00A6 1000-66B29", 2)
如果R将字符串打印为
1000-66329
,而不是
Φ1000-66B29
,则
将被解释为字符串
,而不是unicode字符。然后你可以做:

substring("<U+00A6>  1000-66329",9)
我们也可以这样做

trimws(gsub("\\S+\\s+|-", " ", q))
#[1] "1000 66329"
我只想删除字符串开头的unicode

这样,您就不需要
gsub
,您可以使用
sub
“^\\s*\\s*”
模式:

q <-"<U+00A6>  1000-66329"
sub("^\\s*<U\\+\\w+>\\s*", "", q)

请参见

而不是删除,您应该将其转换为适当的格式。。。您必须将本地设置为UTF-8,如下所示:

Sys.setlocale("LC_CTYPE", "en_US.UTF-8")
也许您会看到以下消息:

Warning message:
In Sys.setlocale("LC_CTYPE", "en_US.UTF-8") :
  OS reports request to set locale to "en_US.UTF-8" cannot be honored
在这种情况下,您应该使用
stringi::stri_trans_general(x,“zh”)


这里“zh”的意思是“中文”。你应该知道你必须转换成哪种语言。就是这样

在分隔符(空格?)上拆分,然后取第二位文本?赋值实际上是什么样子的?您是分配Unicode字符U+00A6还是文字字符串
'
?因为这就是你的代码目前正在做的事情,其余的都没有多大意义。事实上,我有一个数据框,其中一列有像“1000-66329”这样的值,这是unicode for Breake bar symbol(Alpha),它位于所有值的开头。我想从数据中删除此意外符号。也许可以尝试将该符号复制并粘贴到您的gsub中。谢谢您的解决方案。但这给了我“006 1000 66329”,我还有一些包含字母的字符串,也像“1000-66B29”。我只想删除字符串开头的unicode。这是删除(ASCII)字符串
,而不是unicode字符。这对我来说非常有效。非常感谢您提供的解决方案。@HongOoi:没错,这就是OP在输入中的内容。@user6559913:FYI,
“\u00a6”
模式与PCRE regex风格不兼容,要匹配unicode代码点,您需要使用
\x{00a6}
符号。然而,正如您自己所提到的,您有一个要删除的literal
子字符串,所以您不需要它。
trimws(gsub("^\\s*<U\\+\\w+>|-", " ", q))
Sys.setlocale("LC_CTYPE", "en_US.UTF-8")
Warning message:
In Sys.setlocale("LC_CTYPE", "en_US.UTF-8") :
  OS reports request to set locale to "en_US.UTF-8" cannot be honored