ホームページ >バックエンド開発 >Golang >Go 文字列出力でエスケープされた改行文字と実際の改行文字を区別するにはどうすればよいですか?

Go 文字列出力でエスケープされた改行文字と実際の改行文字を区別するにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-11-28 03:46:10820ブラウズ

How Can I Distinguish Between Escaped and Actual Newline Characters in Go String Output?

Go での改行文字の区別

Go では、外部コマンドからの文字列出力を読み取ると、「n」改行文字の区別に問題が生じる可能性があります。文字列の内容と実際の改行内。

問題

strings.Split(output, "n") や bufio.NewScanner(strings.NewReader(output)) などのメソッドを使用すると、文字列バッファーが "n" 文字の任意のインスタンスで分割されます。 、改行文字であるか、文字列コンテンツの一部であるかは関係ありません。

解決策

この問題は、Go がバックティックで囲まれた文字列リテラル内の改行文字をエスケープするために発生します。エスケープされた改行と実際の改行を区別するには、次の方法を使用できます。

import "strings"

func ProcessStringOutput(output []byte) []string {
    // Replace escaped line breaks with actual line breaks
    output = []byte(strings.Replace(string(output), `\n`, "\n", -1))

    // Split into lines
    return strings.Split(string(output), "\n")
}

この関数は、埋め込まれたエスケープされた改行を実際の改行に変換し、文字列の内容を中断することなく適切な行分割を可能にします。

使用例

次の文字列が与えられた場合出力:

First line: "test1"
Second line: "123;\n234;\n345;"
Third line: "456;\n567;"
Fourth line: "test4"

関数は 7 行ではなく 3 行を生成します:

[]string{"First line: \"test1\"", "Second line: \"123;\n234;\n345;\"", "Third line: \"456;\n567;\""}

このメソッドにより、内部改行文字を保持しながら複数行の文字列を解析できます。

以上がGo 文字列出力でエスケープされた改行文字と実際の改行文字を区別するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。