我有兴趣从字符串中的美元金额中移除所有逗号,但最后一个(如果有的话)。例如,假设我有
x <- c("$1,450", "$1,254,345,", "$2,423,123")
我感兴趣的是这样的:
x
## [1] "$1450" "$1254345," "$2423123"
所以,我想首先检查最后是否存在逗号。如果是,我会删除除最后一个之外的所有内容。如果最后没有逗号,我只需删除所有逗号。
答案 0 :(得分:3)
regex
很有帮助
gsub(",(?!$)", "", x, perl=TRUE)
# "$1450" "$1254345," "$2423123"
正则表达式模式",(?!$)"
,
匹配所有逗号
(?!$)
否定前瞻,排除位于字符串结尾的逗号$
答案 1 :(得分:1)
以下是2个解决方案
"123 456 789".split(" ")
用数字(捕获组)
代替数字后跟数字["123", "456", "789"]
逗号后面必须跟一个要替换的数字(正向前瞻)
在这两种情况下,gsub(",(\\d)", "\\1", x)
可以替换为gsub(",(?=\\d)", "", x, perl = T)
,如果您想匹配任何符号而不是数字:
\\d
答案 2 :(得分:0)
您可以在gsub()
中合并str_sub()
和ifelse()
来实现这一目标。这是一个例子
x1 <- c("$1,450", "$1,254,345,", "$2,423,123")
x1
library(stringr)
x2 <- ifelse(str_sub(x1, -1, nchar(x1)) == ",",
paste0(gsub(",", "", str_sub(x1, 1, nchar(x1)-1)), ","),
gsub(",", "", str_sub(x1, 1, nchar(x1))))
x2