分割字符串并保留分隔符

jac*_*all 4 string r strsplit stringr

假设我有一个字符串:

StringA/StringB/StringC
Run Code Online (Sandbox Code Playgroud)

有什么方法可以按/符号拆分该字符串,但将其保留在返回值中:

StringA
/StringB
/StringC
Run Code Online (Sandbox Code Playgroud)

Maë*_*aël 6

是的,展望未来:(?=/)

library(stringr)
str_split(str, "(?=/)")

#[[1]]
#[1] "StringA"  "/StringB" "/StringC"
Run Code Online (Sandbox Code Playgroud)

与分离功能同样有效tidyr

tidyr::separate_rows(data.frame(str), str, sep = "(?=/)")

#  str        
#1 StringA 
#2 /StringB
#3 /StringC
Run Code Online (Sandbox Code Playgroud)

使用基本 R 时strsplit,前瞻不太简单,但这效果很好:

unlist(strsplit(str, "(?<=.)(?=[/])", perl = TRUE))
#[1] "StringA"  "/StringB" "/StringC"
Run Code Online (Sandbox Code Playgroud)

反之亦然:

unlist(strsplit(str, "(?<=/)", perl = TRUE))
#[1] "StringA/" "StringB/" "StringC" 
Run Code Online (Sandbox Code Playgroud)