根据条件向字符串向量的某些元素添加“\n”

Add "\n" to certain elements of a string vector based on a condition

假设我们有一个名为 vec 的字符串向量。有没有办法在 vec 超过 10 个字符的元素的 第一个完整单词(即至少两个字符的术语) 之前添加 "\n"

我的desired_vec如下图

(这是一个典型的玩具示例,但我非常感谢答案是一个函数。)

vec = c("Van Beuningen et al b", "bbbb & zz", "AA, BB, & CC")

desired_vec = c("Van Beuningen \net al b", "bbbb & zz", "AA, BB, & \nCC")

您可以尝试像这样替换正则表达式

gsub("^(.{9}.*?) (?=\w{2,})(.*)", "\1 \n\2",vec, perl = TRUE)
# [1] "Van Beuningen \net al b" "bbbb & zz"              
# [3] "AA, BB, & \nCC"  

这将确保您在开头有一些字母,然后找到第一个 space 后跟至少 2 个字符,然后插入一个新行