为了账号安全,请及时绑定邮箱和手机立即绑定

Golang从多行字符串中删除空行的惯用方法

Golang从多行字符串中删除空行的惯用方法

Go
潇湘沐 2021-12-13 11:04:37
如果我有一个多行字符串this is a linethis is another line删除空行的最佳方法是什么?我可以通过拆分、迭代和进行条件检查来使其工作,但有没有更好的方法?
查看完整描述

3 回答

?
牧羊人nacy

TA贡献1862条经验 获得超7个赞

假设您想要删除空行作为输出的相同字符串,我将使用正则表达式:


import (

    "fmt"

    "regexp"

)


func main() {


    var s = `line 1

line 2


line 3`


    regex, err := regexp.Compile("\n\n")

    if err != nil {

        return

    }

    s = regex.ReplaceAllString(s, "\n")


    fmt.Println(s)

}


查看完整回答
反对 回复 2021-12-13
?
慕妹3242003

TA贡献1824条经验 获得超6个赞

类似于 ΔλЛ 的答案,它可以用字符串来完成。替换:


func Replace(s, old, new string, n int) string Replace 返回字符串 s 的副本,其中 old 的前 n 个非重叠实例被 new 替换。如果 old 为空,则它在字符串的开头和每个 UTF-8 序列之后匹配,为 k-rune 字符串生成最多 k+1 次替换。如果 n < 0,则替换次数没有限制。


package main


import (

    "fmt"

    "strings"

)


func main() {


    var s = `line 1

line 2


line 3`


    s = strings.Replace(s, "\n\n", "\n", -1)


    fmt.Println(s)

}

https://play.golang.org/p/lu5UI74SLo


查看完整回答
反对 回复 2021-12-13
?
慕的地6264312

TA贡献1817条经验 获得超6个赞

更通用的方法可能是这样的。


package main


import (

    "fmt"

    "regexp"

    "strings"

)


func main() {

    s := `



    #### 


    ####





    ####



    ####





    `


    fmt.Println(regexp.MustCompile(`[\t\r\n]+`).ReplaceAllString(strings.TrimSpace(s), "\n"))

}

https://play.golang.org/p/uWyHfUIDw-o


查看完整回答
反对 回复 2021-12-13
  • 3 回答
  • 0 关注
  • 1121 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号