【问题标题】:Removing Two Characters From A String从字符串中删除两个字符
【发布时间】:2012-07-04 22:53:47
【问题描述】:

相关问题here

所以我有一个包含美元符号和逗号的货币值的字符向量。但是,我想尝试在同一步骤中同时删除逗号和美元符号。

这会删除美元符号 =

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 结果保存到一个新变量中,然后在该变量上重新应用该(或另一个函数)。但我想我想知道一个步骤可以同时做到这两个。

【问题讨论】:

  • 我不是正则表达式专家,但也许gsub('\\$|,', '', d)?

标签: r stringr


【解决方案1】:

因为在 cmets 中回答不好:

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

用空字符串替换 $ 或 (|) ,

【讨论】:

  • 双反斜杠是干什么用的?@joran
  • @WhiteBig $ 是正则表达式中的一个特殊字符,因此需要转义。你可以通过?regex阅读。
  • @WhiteBig 有点像。只是\本身就是一个特殊字符,所以也需要转义。所以你转义了$:\$,但是\也需要转义,所以你最终得到\\$
  • 知道了,我们可以在 $ 和 之前单独放置一个反斜杠吗?
  • @WhiteBig 没有。$ 必须有两个,, 不需要任何(不是特殊字符)。
【解决方案2】:

查看?regexp 了解更多特殊的正则表达式:

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

【讨论】:

  • 我认为这也会去掉小数点,这似乎不是 OP 想要的。上面@joran 的回答似乎完全没有超出范围。
  • @thelatemail 你是对的!当周围有龙舌兰酒时,我不应该回答问题! joran提供的答案要好得多。
猜你喜欢
  • 2016-01-21
  • 2019-10-25
  • 2019-03-22
  • 1970-01-01
  • 2023-03-14
  • 2017-02-22
  • 2016-07-26
相关资源
最近更新 更多