我想将be33szfuhm100060这样的字符串转换为BESZFUHM0060。
为了用大写字母替换小写字母,我到目前为止使用了gsub函数。
test1=gsub("be","BE",test)
有没有办法告诉这个函数替换第3和第4个字符串元素?如果没有,如果你能告诉我另一种解决这个问题的方法,我真的很感激。也许还有一个更通用的解决方案,将某个位置的字符串元素更改为大写字母,无论该元素是什么?
答案 0 :(得分:9)
有几点意见:
可以使用toupper
将字符串转换为大写,例如:
> toupper('be33szfuhm100060')
> [1] "BE33SZFUHM100060"
您可以使用substr
按字符位置提取子字符串,使用paste
来连接字符串:
> x <- 'be33szfuhm100060'
> paste(substr(x, 1, 2), substr(x, 5, nchar(x)), sep='')
[1] "beszfuhm100060"
答案 1 :(得分:7)
作为替代方案,如果你要做这个很多:
String <- function(x="") {
x <- as.character(paste(x, collapse=""))
class(x) <- c("String","character")
return(x)
}
"[.String" <- function(x,i,j,...,drop=TRUE) {
unlist(strsplit(x,""))[i]
}
"[<-.String" <- function(x,i,j,...,value) {
tmp <- x[]
tmp[i] <- String(value)
x <- String(tmp)
x
}
print.String <- function(x, ...) cat(x, "\n")
## try it out
> x <- String("be33szfuhm100060")
> x[3:4] <- character(0)
> x
beszfuhm100060
答案 2 :(得分:2)
您可以使用substring
删除第三和第四个元素。
x <- "be33szfuhm100060"
paste(substring(x, 1, 2), substring(x, 5), sep = "")
答案 3 :(得分:0)
如果根据位置知道所需字符串的哪些部分,请使用substr
或substring
。正如我在评论中提到的,您可以使用toupper
将字符强制为大写。
paste( toupper(substr(test,1, 2)),
toupper(substr(test,5,10)),
substr(test,12,nchar(test)),sep="")
# [1] "BESZFUHM00060"