gpt4 book ai didi

用其他东西替换字符串中第 N 次出现的字符

转载 作者:行者123 更新时间:2023-12-04 11:42:29 24 4
gpt4 key购买 nike

考虑 a = paste(1:10,collapse=", ")这导致

a = "1, 2, 3, 4, 5, 6, 7, 8, 9, 10"

我想替换每个第 n 次(比如第 4 次)出现的“,”,并用其他东西替换它(比如“\n”)。所需的输出是:
"1, 2, 3, 4\n 5, 6, 7, 8\n 9, 10"

我正在寻找使用 gsub 的代码(或类似的东西)和某种形式的 regular expression以实现这一目标。

最佳答案

您可以更换 ((?:\d+, ){3}\d),\1\n
您基本上可以分别捕获 group1 和逗号中的第四个逗号之前的所有内容,并将其替换为 \1\n它用 group1 文本和换行符替换匹配的文本,为您提供预期的结果。

Regex Demo

R Code demo

gsub("((?:\\d+, ){3}\\d),", "\\1\n", "1, 2, 3, 4, 5, 6, 7, 8, 9, 10")

打印,
[1] "1, 2, 3, 4\n 5, 6, 7, 8\n 9, 10"

编辑:

要将上述解决方案推广到任何文本,我们可以更改 \d[^,]
New R code demo
gsub("((?:[^,]+, ){3}[^,]+),", "\\1\n", "1, 2, 3, 4, 5, 6, 7, 8, 9, 10")
gsub("((?:[^,]+, ){3}[^,]+),", "\\1\n", "a, bb, ccc, dddd, 500, 600, 700, 800, 900, 1000")

输出,
[1] "1, 2, 3, 4\n 5, 6, 7, 8\n 9, 10"
[1] "a, bb, ccc, dddd\n 500, 600, 700, 800\n 900, 1000"

关于用其他东西替换字符串中第 N 次出现的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55874998/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com