假设我有一个字符串
"ABCDEFGHI56dfsdfd"
我想做的是一次在多个位置插入一个空格字符。
例如。我想在随机选择的两个位置插入空格字符,比如 4 和 8。
所以输出应该是
"ABCD EFGH I56dfsdfd"
最有效的方法是什么?鉴于字符串中可以包含任何类型的字符(不仅仅是字母表)。
最佳答案
这是一个基于正则表达式的解决方案:
vec <- "ABCDEFGHI56dfsdfd"
# sample two random positions
pos <- sample(nchar(vec), 2)
# [1] 6 4
# generate regex pattern
pat <- paste0("(?=.{", nchar(vec) - pos, "}$)", collapse = "|")
# [1] "(?=.{11}$)|(?=.{13}$)"
# insert spaces at (after) positions
gsub(pat, " ", vec, perl = TRUE)
# [1] "ABCD EF GHI56dfsdfd"
这种方法基于积极的前瞻,例如,(?=.{11}$)
。在此示例中,在字符串结尾 ($
) 之前的 11 个字符处插入了一个空格。
关于regex - 一次在字符串中的多个位置插入一个字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27608623/