从字符串中删除两个字符

11

相关问题在这里

我有一个包含货币值的字符向量,其中既包括美元符号又包括逗号。然而,我想尝试在同一步骤中删除逗号和美元符号。

这将删除美元符号=

d = c("$0.00", "$10,598.90", "$13,082.47")
gsub('\\$', '', d)

这段代码用于去除逗号 =

library(stringr)
str_replace_all(c("10,0","tat,y"), fixed(c(","), "")

我想知道是否可以一步删除这两个字符。

我知道可以将 gsub 的结果保存到一个新变量中,然后再对该变量重新应用(或应用其他函数)。但我想知道能否一步完成这两个操作。


2
我不是正则表达式专家,但也许可以用 gsub('\\$|,', '', d) - joran
2个回答

16

因为在评论中回答是不好的:

gsub('\\$|,', '', d)

用空字符串替换$或者,或者括号内的|


双反斜杠(\)有什么作用?@joran - Demo
1
@WhiteBig $ 是正则表达式中的特殊字符,所以必须进行转义。您可以通过 ?regex 查阅相关信息。 - joran
@WhiteBig 有点像。只是因为 \ 是一个特殊字符,所以它也需要被转义。所以你要转义 $\$,但是 \ 也需要被转义,所以最终你会得到 \\$ - joran
明白了,我们可以在 $ 和 , 前面分别加上单个反斜杠吗? - Demo
@WhiteBig 不是的。"$"必须有两个,而","不需要任何特殊字符。 - joran

4

请注意 ?regexp,它是一种特殊的正则表达式符号,请查看相关内容:

> gsub('[[:punct:]]', '', d)
[1] "000"     "1059890" "1308247"

我认为这也会去掉小数点,这似乎不是OP想要的。@joran上面的答案似乎完全做到了而没有过度。 - thelatemail
@thelatemail 你说得对!当有龙舌兰酒在场时,我不应该回答问题!Joran提供的答案更好。 - Justin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接