String R:如何替换let';是说字符串中的第五个元素吗?

String R:如何替换let';是说字符串中的第五个元素吗?,string,r,replace,String,R,Replace,我想把像be33szfuhm100060这样的a字符串转换成BESZFUHM0060 为了用大写字母替换小写字母,到目前为止我使用了gsub函数 test1=gsub("be","BE",test) 是否有方法告诉此函数替换第3个和第4个字符串元素?如果没有,如果你能告诉我解决这个问题的另一种方法,我将不胜感激。也许还有一种更通用的解决方案,可以将某个位置的字符串元素更改为大写字母,而不管该元素是什么?您可以使用子字符串来删除第三个和第四个元素 x <- "be33szfuhm10006

我想把像be33szfuhm100060这样的a字符串转换成BESZFUHM0060

为了用大写字母替换小写字母,到目前为止我使用了gsub函数

test1=gsub("be","BE",test)

是否有方法告诉此函数替换第3个和第4个字符串元素?如果没有,如果你能告诉我解决这个问题的另一种方法,我将不胜感激。也许还有一种更通用的解决方案,可以将某个位置的字符串元素更改为大写字母,而不管该元素是什么?

您可以使用
子字符串来删除第三个和第四个元素

x <- "be33szfuhm100060"
paste(substring(x, 1, 2), substring(x, 5), sep = "")

x一些观察结果:

C可以使用
toupper
将字符串转换为大写,例如:

> toupper('be33szfuhm100060')
> [1] "BE33SZFUHM100060"
您可以使用
substr
按字符位置提取子字符串,并使用
paste
连接字符串:

> x <- 'be33szfuhm100060'
> paste(substr(x, 1, 2), substr(x, 5, nchar(x)), sep='')
[1] "beszfuhm100060"
>x粘贴(substr(x,1,2),substr(x,5,nchar(x)),sep=''
[1] “beszfuhm100060”

如果您知道基于位置的字符串的哪些部分,请使用
substr
substring
。正如我在评论中提到的,您可以使用
toupper
强制字符为大写

paste( toupper(substr(test,1, 2)),
       toupper(substr(test,5,10)),
       substr(test,12,nchar(test)),sep="")
# [1] "BESZFUHM00060"

作为替代方案,如果您打算经常这样做:

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

String如果希望所有字母都是大写的,只需使用
toupper
。谢谢,很简单。希望有人也能为我的实际问题找到解决方案。
toupper
是您所需要的,但标题中的问题状态解决方案是:
sub(^(.{4})()(.*$),“\\15\\3”,“abcdef”)
,它给出了
“abcd5f”