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

时间:2016-02-12 10:21:51

标签: string replace go

如果我有一个多行字符串,如

this is a line

this is another line

删除空行的最佳方法是什么?我可以通过拆分,迭代和进行条件检查来使其工作,但有更好的方法吗?

3 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:1)

类似于ΔλЛ的答案,可以用strings.Replace:

完成
  

func替换(s,old,new string,n int)字符串   Replace返回字符串s的副本,其中前n个非重叠的old实例替换为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

答案 2 :(得分:0)

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

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