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 サイトの他の関連記事を参照してください。