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

发布于 2025-01-12 06:42:05 字数 374 浏览 2 评论 0原文

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

我的 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")

Say we have a string vector named vec. Is there a way to add "\n" before the first whole word (i.e., terms of at least two characters) of the elements of vec that exceed 10 characters?

My desired_vec is shown below.

(This is a representative toy example, but I highly appreciate for the answer to be a function.)

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")

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

谁人与我共长歌 2025-01-19 06:42:05

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

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

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

You can try a regular expression replace like this

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

That will make sure you have some letters at the start, then find the first space followed by at least 2 character and then will insert a new line

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文