从字符串中删除特殊字符和空格
Removing special characters and spaces from strings
name1 <- "Adam & Eve"
name2 <- "Spartacus"
name3 <- "Fitness and Health"
我想去掉名字之间的所有空格和特殊字符如%&,.
和单词and
,然后每个字符串大写,所以名字变成:
name1 <- "ADAMEVE"
name2 <- "SPARTACUS"
name3 <- "FITNESSHEALTH"
我们可以使用 sub
删除 and
字符串,然后使用 gsub
删除字母(大写、小写)以外的所有内容 (^
) 和将大小写转换为大写 (toupper
)
f1 <- function(x) toupper(gsub("[^A-Za-z]", "", sub("and", "", x, fixed = TRUE)))
-测试
> f1(name1)
[1] "ADAMEVE"
> f1(name2)
[1] "SPARTACUS"
> f1(name3)
[1] "FITNESSHEALTH"
受 akrun 回答的启发,我们可以创建一个函数并将其应用于向量:
library(stringr)
my_function <- function(x){
x <- str_replace_all(x, "[^A-Za-z0-9]","")
x <- toupper(x)
x <- str_remove_all(x, "AND")
return(x)
}
my_function(c(name1, name2,name3))
输出:
[1] "ADAMEVE" "SPARTACUS" "FITNESSHEALTH"
您可以将 stringr
与 str_remove_all()
和“任何非单词字符”的模式 ("\D"
) 以及单词 "and"
(使用单词边界)一起使用这里,\b
),然后用 toupper()
全部改成大写
library(stringr)
name1 %>% str_remove_all("\D|\band\b") %>% toupper
如果你想为此定义一个函数,你可以按如下方式进行:
my_function <- function(x) { x %>% str_remove_all ("\D|\band\b") %>% toupper }
name1 <- "Adam & Eve"
name2 <- "Spartacus"
name3 <- "Fitness and Health"
我想去掉名字之间的所有空格和特殊字符如%&,.
和单词and
,然后每个字符串大写,所以名字变成:
name1 <- "ADAMEVE"
name2 <- "SPARTACUS"
name3 <- "FITNESSHEALTH"
我们可以使用 sub
删除 and
字符串,然后使用 gsub
删除字母(大写、小写)以外的所有内容 (^
) 和将大小写转换为大写 (toupper
)
f1 <- function(x) toupper(gsub("[^A-Za-z]", "", sub("and", "", x, fixed = TRUE)))
-测试
> f1(name1)
[1] "ADAMEVE"
> f1(name2)
[1] "SPARTACUS"
> f1(name3)
[1] "FITNESSHEALTH"
受 akrun 回答的启发,我们可以创建一个函数并将其应用于向量:
library(stringr)
my_function <- function(x){
x <- str_replace_all(x, "[^A-Za-z0-9]","")
x <- toupper(x)
x <- str_remove_all(x, "AND")
return(x)
}
my_function(c(name1, name2,name3))
输出:
[1] "ADAMEVE" "SPARTACUS" "FITNESSHEALTH"
您可以将 stringr
与 str_remove_all()
和“任何非单词字符”的模式 ("\D"
) 以及单词 "and"
(使用单词边界)一起使用这里,\b
),然后用 toupper()
library(stringr)
name1 %>% str_remove_all("\D|\band\b") %>% toupper
如果你想为此定义一个函数,你可以按如下方式进行:
my_function <- function(x) { x %>% str_remove_all ("\D|\band\b") %>% toupper }