首页 > 解决方案 > 如何从r中的字符串中删除以下unicode?

问题描述

我有以下7007756484480000000<U+2660>75,648,448
要删除的字符串,7007756484480000000<U+2660>以及我一直在尝试其他许多不同方式的逗号
,但我没有得到它。如果有人可以提供帮助,将不胜感激。

标签: rregex

解决方案


表达一个明确的问题可能存在语言障碍,但如果我正在阅读请求,它是从该字符串中删除“7007756484480000000”和“,”。pattern正则表达式函数的第一个参数 (the )gsub在写入模式字符串中时将接受逻辑 OR "|",因此我们可以将任何此类实例替换为""

> x <- "700775648448000000075,648,448"
> gsub("7007756484480000000|,","",x)
[1] "75648448"

对于修改后的问题(如果这确实是字符串在 R 中显示时的样子),您可以删除直角括号和逗号之前的所有内容:

gsub("(^.+>)|,",   # match either a comma or (everything from start to the ">")
      "",          # replace with empty string
      "7007756484480000000<U+2660>75,648,448")   # the input

一个真正的 Unicode 字符应该是这样的:

 z <- "\U2660"
 nchar(z)
#[1] 1
# whereas you just have ordinary characters
 z <- "<U+2660>"
 nchar(z)
#[1] 8

如果它是 R 字符向量中的“真实”Unicode 字符,它可以通过以下两种方式之一被删除,或者使用字符类机制或使用必要的双(在这种情况下是三重反斜杠),因为 R和 PCRE 共享一个转义字符(“|”):

z <- "\U2660"
z
#[1] "♠"
gsub("\\U2660","",z)
#[1] "♠"
gsub("\\U2660","",z)
#[1] "♠"

#Method 1
gsub("[\U2660]","",z)
#[1] ""

#Method 2
 gsub("\\\U2660","",z)
#[1] ""

推荐阅读