web-dev-qa-db-ja.com

Golang:テキストファイルの文字列の改行の置き換えに関する問題

私はファイルを読み取らせようとしてきました。これにより、読み取った内容が文字列に入れられます。次に、文字列は行ごとに複数の文字列に分割されます。

absPath, _ := filepath.Abs("../Go/input.txt")
data, err := ioutil.ReadFile(absPath)
if err != nil {
    panic(err)
}
input := string(data)

Input.txtは次のように読み取られます。

a

強い小鳥

非常に

寛大な心

行った

ある日学校へ

彼の食べ物を忘れた

しかしながら、

re = regexp.MustCompile("\\n")
input = re.ReplaceAllString(input, " ")

テキストを次の混乱状態に変換します。

彼の食べ物をホメオット

改行を置き換えると、テキストが反転するところまで、どれほどひどく台無しになるのかわかりません。

15

Windowsを使用してコードを実行していると思います。結果の文字列の長さを出力すると、100文字を超える文字が表示されることに注意してください。その理由は、Windowsが改行(\n)だけでなく、改行(\r)-Windowsの改行は実際には\r\nではなく\n。それらを文字列から適切にフィルタリングするには、以下を使用します。

re = regexp.MustCompile(`\r?\n`)
input = re.ReplaceAllString(input, " ")

バッククォートにより、正規表現でバックスラッシュを引用符で囲む必要がなくなります。キャリッジリターンに疑問符を使用して、コードが他のプラットフォームでも動作することを確認しました。

24
Jens Grabarske

私はあなたがそのような簡単な仕事のために正規表現を使う必要があるとは思いません。これは、

absPath, _ := filepath.Abs("../Go/input.txt")
data, _ := ioutil.ReadFile(absPath)
input := string(data)
strings.Replace(input, "\n","",-1)

example of removing \n

3
Salvador Dali