英文:
How to remove multiple line break `\n` from a string but keep only one?
问题
在Go语言中,你可以使用正则表达式来实现替换多个换行符为一个换行符。以下是一个示例代码:
package main
import (
"fmt"
"regexp"
)
func main() {
str := "Some string\n\n\n\n\n\nFoo bar Step1:\n\nFoo bar Step2:\n\n\nFoo bar final"
re := regexp.MustCompile(`(\r\n?|\n){2,}`)
result := re.ReplaceAllString(str, "$1")
fmt.Println(result)
}
这段代码使用了regexp
包来进行正则表达式的匹配和替换。(\r\n?|\n){2,}
表示匹配两个或以上的换行符,$1
表示替换为第一个匹配的换行符。
运行以上代码,输出结果为:
Some string\nFoo bar Step1:\nFoo bar Step2:\nFoo bar final
这样就实现了在Go语言中替换多个换行符为一个换行符的功能。
英文:
At JavaScript, I was using this Regexp to replace multiple line break with one
str.replace(/(\r\n?|\n){2,}/g, '$1')
but for golang I am not sure what it will be. How can I achieve this in golang?
Input:
> Some string\n\n\n\n\n\nFoo bar Step1:\n\nFoo bar Step2:\n\n\nFoo bar final
Output
> Some string\nFoo bar Step1:\nFoo bar Step2:\nFoo bar final
答案1
得分: 4
你可以做同样的事情。
rg := regexp.MustCompile(`(\r\n?|\n){2,}`)
s := "Some string\n\n\n\n\n\nFoo bar Step1:\n\nFoo bar Step2:\n\n\nFoo bar final"
result := rg.ReplaceAllString(s, "$1")
fmt.Printf("%q", result)
// "Some string\nFoo bar Step1:\nFoo bar Step2:\nFoo bar final"
https://go.dev/play/p/u-mfj7tXctO
英文:
You can do the same.
rg := regexp.MustCompile(`(\r\n?|\n){2,}`)
s := "Some string\n\n\n\n\n\nFoo bar Step1:\n\nFoo bar Step2:\n\n\nFoo bar final"
result := rg.ReplaceAllString(s, "$1")
fmt.Printf("%q", result)
// "Some string\nFoo bar Step1:\nFoo bar Step2:\nFoo bar final"
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论