R:删除字符串中的子字符串

埃斯本·埃克哈特(Esben Eickhardt)

有没有一种优雅的方法可以根据字符的索引在字符串中删除子字符串?

这是我现在的做法:

# My data
mystring <- "Hello, how are {you} doing?"
index_of_substring <- c(16,20)

# Pasting two substrings
mystring_no_substring <- paste0(substr(mystring, 1, index_of_substring[1]-1), substr(mystring, index_of_substring[2]+1, nchar(mystring)))

# Cleaning extra spaces
mystring_no_substring <- gsub("  ", " ", mystring_no_substring)

我当然可以把它写成一个通用函数,但是我只是想知道那里是否有一个优雅的解决方案,例如用一个字符串代替一个索引而不用任何其他词。

注意:这不是正则表达式问题。

G.格洛腾迪克

1)strsplit / paste将输入分解为字符,忽略16到20之间的字符,将其折叠回去,并用单个空格替换空格。仅使用基本功能。

gsub(" +", " ", paste(strsplit(s, "")[[1]][-seq(ix[1], ix[2])], collapse = ""))
## [1] "Hello, how are doing?"

2)substr <-用空格替换指示的字符,然后将空格数减少为一个空格。仅使用基本功能。

gsub(" +", " ", "substr<-"(s, ix[1],  ix[2], gsub(".", " ", s)))
## [1] "Hello, how are doing?"

请注意,这是非破坏性的,即它在不修改输入的情况下输出结果。

注意:我们使用了测试输入:

s <- "Hello, how are {you} doing?"
ix <- c(16, 20)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章