Rumah >pembangunan bahagian belakang >Golang >Bagaimanakah Saya Boleh Membezakan Antara Watak Baris Baharu yang Dilepaskan dan Sebenar dalam Output Go String?
Membezakan Aksara Baris Baharu dalam Go
Dalam Go, membaca output rentetan daripada arahan luaran mungkin menimbulkan cabaran dalam membezakan antara aksara baris baharu "n" dalam kandungan rentetan dan pemisah baris sebenar.
The Masalah
Apabila menggunakan kaedah seperti rentetan.Split(output, "n") atau bufio.NewScanner(strings.NewReader(output)), penampan rentetan berpecah pada mana-mana contoh aksara "n" , tidak kira sama ada watak putus baris atau sebahagian daripada kandungan rentetan.
The Penyelesaian
Masalah timbul kerana Go melarikan diri daripada aksara pemisah baris dalam literal rentetan yang disertakan dalam kutu belakang. Untuk membezakan antara pemisah baris yang dilepaskan dan yang sebenar, anda boleh menggunakan pendekatan berikut:
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") }
Fungsi ini menukar pemisah baris yang dilepaskan terbenam kepada pemisah baris sebenar, membolehkan pemisahan baris yang betul tanpa mengganggu kandungan rentetan.
Contoh Penggunaan
Diberi rentetan berikut output:
First line: "test1" Second line: "123;\n234;\n345;" Third line: "456;\n567;" Fourth line: "test4"
Fungsi ini akan menghasilkan tiga baris dan bukannya tujuh:
[]string{"First line: \"test1\"", "Second line: \"123;\n234;\n345;\"", "Third line: \"456;\n567;\""}
Kaedah ini membolehkan menghuraikan rentetan berbilang baris sambil mengekalkan aksara baris baharu dalaman.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Membezakan Antara Watak Baris Baharu yang Dilepaskan dan Sebenar dalam Output Go String?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!