我有包含数字的字符串,如果字符串中有超过5个数字,我想删除这些数字。例如,将"string 58474847“修改为"string"。但保持"string 55"不变。数字也可以位于字符串的中间。
"string 58474847
"string"
"string 55"
wnrlj8wa1#
使用"{6,}"表示“大于5”:
"{6,}"
x <- c("string 58474847", "string 55") gsub("[0-9]{6,}", "", x) # "string " "string 55"
如果您还想像示例中那样删除前导空格:
gsub("\\s*[0-9]{6,}", "", x) # "string" "string 55"
正如@ChrisRuehlemann所指出的,这将删除每个字符串中所有6位以上的运行。如果你想只删除每个字符串的第一个运行,使用sub()。
sub()
x2 <- "string 1234567 another string 9876543" gsub("\\s*[0-9]{5,}", "", x2) # "string another string" sub("\\s*[0-9]{5,}", "", x2) # "string another string 9876543"
kxeu7u2r2#
library(stringr) str_remove(x, "\\s\\d{6,}")
gr8qqesn3#
可以使用stringr和函数str_count AND str_replace_all
stringr
str_count
str_replace_all
library(stringr) st=c("string 58474847","string 55") st=ifelse(str_count(st,"\\d")>5,str_replace_all(st,"\\d",""),st) st [1] "string " "string 55"
更多详情请点击此处stringr package,备忘单请点击此处cheat sheet
3zwtqj6y4#
你也可以通过计算字符串中的位数,然后替换超过5位的所有时间来实现
library(stringr) #> Warning: package 'stringr' was built under R version 4.1.3 test <- c('string 234567', 'string 55', 'str45ing 3656', 'string34567', '5string55555') test[str_count(test, '[0-9]') > 5] <- 'string' test #> [1] "string" "string 55" "string" "string34567" "string"
由reprex package(v2.0.1)于2023-03-28创建
pbgvytdp5#
我们可以像下面这样使用trimws
trimws
> trimws(c("string 58474847", "string 55"), whitespace = "\\s\\d{6,}") [1] "string" "string 55"
5条答案
按热度按时间wnrlj8wa1#
使用
"{6,}"
表示“大于5”:如果您还想像示例中那样删除前导空格:
正如@ChrisRuehlemann所指出的,这将删除每个字符串中所有6位以上的运行。如果你想只删除每个字符串的第一个运行,使用
sub()
。kxeu7u2r2#
gr8qqesn3#
可以使用
stringr
和函数str_count
ANDstr_replace_all
更多详情请点击此处stringr package,备忘单请点击此处cheat sheet
3zwtqj6y4#
你也可以通过计算字符串中的位数,然后替换超过5位的所有时间来实现
由reprex package(v2.0.1)于2023-03-28创建
pbgvytdp5#
我们可以像下面这样使用
trimws