根据条件向字符串向量的某些元素添加“\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 个字符,然后插入一个新行
假设我们有一个名为 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 个字符,然后插入一个新行