2016-02-12 20 views
2

刪除空行。如果我有一個多行字符串像Golang慣用的方法,從多線串

this is a line 

this is another line 

什麼是刪除空行的最好方法?我可以通過分割,迭代和進行條件檢查來實現它,但是有沒有更好的方法?你想有作爲輸出刪除空行相同的字符串

回答

1

Assumming,我會使用正則表達式:

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

如果字符串通過反覆巨大的切片,你會推薦哪表現之一獲得?正則表達式還是迭代? – scott

+0

我仍然會推薦regex,但如果你想稍後合併這些字符串(比如說,分成一個slice),那麼'string.Split()'和迭代可能是更好的選擇。 – syntagma

+0

謝謝@REACHUS。非常感激。 – scott

1

類似ΔλЛ的回答可以用strings.Replace做到:

func替換(s,舊的,新的字符串,n int)字符串 替換返回字符串s的一個副本,其中舊的前n個非重疊實例替換爲new。如果old爲空,則它在字符串的開始處和每個UTF-8序列之後進行匹配,最多生成一個k-1字符串的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