So ersetzen Sie CRLF in Golang
CRLF bezieht sich auf Carriage Return und Line Feed, den Standard für Zeilenumbrüche unter Windows. Unter Unix- oder Linux-Systemen wird LF (Line Feed) als Zeilenumbruchstandard verwendet. Beim Teilen von Dateien zwischen verschiedenen Betriebssystemen können Probleme mit dem Zeilenumbruch auftreten. In Golang können wir einige einfache Methoden verwenden, um dieses Problem zu lösen.
1. Verwenden Sie bufio, um CRLF und LF zu konvertieren.
Das bufio-Paket bietet viele nützliche Funktionen und Methoden zum Lesen und Schreiben von Dateien. Für die Konvertierung von CRLF und LF können wir zwei Strukturen verwenden, Scanner und Writer.
package main import ( "bufio" "fmt" "os" ) func main() { // 打开文件 f, err := os.Open("test.txt") if err != nil { panic(err) } // 关闭文件 defer f.Close() // 创建Scanner对象 scanner := bufio.NewScanner(f) // 设置Scanner可以扫描CRLF换行符 scanner.Split(bufio.ScanLines) for scanner.Scan() { // 将CRLF转换为LF line := scanner.Text() line = strings.Replace(line, "\r\n", "\n", -1) fmt.Println(line) } }
Im obigen Code erstellen wir zunächst ein Scannerobjekt und stellen es so ein, dass es CRLF-Zeilenumbrüche scannt. Als nächstes verwenden wir die Scan-Methode, um jede Zeile zu lesen, und die Remove-Methode, um CRLF durch LF zu ersetzen.
Wenn Sie LF durch CRLF ersetzen möchten, müssen Sie nur die obige Ersetzungsmethode wie folgt ändern:
line = strings.Replace(line, "\n", "\r\n", -1)
In ähnlicher Weise kann die Konvertierung von CRLF und LF auch mithilfe der Writer-Struktur von bufio erreicht werden.
package main import ( "bufio" "fmt" "os" ) func main() { // 打开文件 f, err := os.Create("test.txt") if err != nil { panic(err) } // 关闭文件 defer f.Close() // 创建Writer对象 writer := bufio.NewWriter(f) // 写入文本内容,使用LF作为换行符 text := "Hello, world!\nWelcome to Golang!\n" _, err = writer.WriteString(text) if err != nil { panic(err) } // 刷新缓冲区,同时将LF转换为CRLF err = writer.Flush() if err != nil { panic(err) } }
Im obigen Code erstellen wir ein Writer-Objekt und verwenden LF als Zeilenumbruchzeichen, um Textinhalte zu schreiben. Als nächstes verwenden Sie die Flush-Methode, um die Daten im Puffer in die Datei zu schreiben und gleichzeitig LF in CRLF zu konvertieren.
2. Verwenden Sie io.Copy, um CRLF und LF zu konvertieren.
Eine weitere einfache Methode ist die Verwendung der Funktion io.Copy. Diese Funktion wird zum Kopieren der Daten im Quell-Reader auf den Ziel-Writer verwendet und kann zum Kopieren von Dateien oder zur Konvertierung von Dateiformaten verwendet werden.
package main import ( "bytes" "io" "os" ) func main() { // 打开源文件 src, err := os.Open("test_win.txt") if err != nil { panic(err) } defer src.Close() // 打开目标文件 dst, err := os.Create("test_unix.txt") if err != nil { panic(err) } defer dst.Close() // 将CRLF转换为LF io.Copy(dst, bytes.NewBufferString(strings.ReplaceAll(bufio.NewScanner(src).Text(), "\r\n", "\n"))) }
Im obigen Code öffnen wir zuerst die Quelldatei und die Zieldatei. Verwenden Sie dann das Scanner-Objekt von bufio, um jede Zeile der Quelldatei zu lesen, und verwenden Sie die Methode „ReplaceAll“, um CRLF durch LF zu ersetzen. Verwenden Sie abschließend io.Copy, um die verarbeiteten Daten in die Zieldatei zu schreiben.
3. Verwenden Sie strings.ReplaceAll, um CRLF und LF zu konvertieren.
Die letzte einfache Methode besteht darin, die Funktion „ReplaceAll“ im Strings-Paket zu verwenden. Diese Funktion kann für Ersetzungsoperationen in Strings verwendet werden.
package main import ( "fmt" "io/ioutil" "os" "strings" ) func main() { // 读取源文件 data, err := ioutil.ReadFile("test_win.txt") if err != nil { panic(err) } // 将CRLF转换为LF newData := strings.ReplaceAll(string(data), "\r\n", "\n") // 写入目标文件 err = ioutil.WriteFile("test_unix.txt", []byte(newData), os.ModePerm) if err != nil { panic(err) } fmt.Println("Done!") }
Im obigen Code verwenden wir die ReadFile-Funktion im ioutil-Paket, um den Inhalt der Quelldatei zu lesen, und verwenden die RemoveAll-Methode, um CRLF durch LF zu ersetzen. Verwenden Sie abschließend die Funktion WriteFile, um die verarbeiteten Daten in die Zieldatei zu schreiben.
Zusammenfassung:
Mit den Bufio- und io-Paketen in Golang kann problemlos eine Konvertierung zwischen CRLF und LF erreicht werden. Darüber hinaus können Ersetzungsoperationen in Strings auch einfach mit der Funktion „ReplaceAll“ im Strings-Paket implementiert werden. Achten Sie unabhängig von der verwendeten Methode auf das Problem der Dateikodierung, um verstümmelte Zeichen zu vermeiden.
Das obige ist der detaillierte Inhalt vonSo ersetzen Sie CRLF in Golang. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

Dieser Artikel erläutert die Paketimportmechanismen von Go: benannte Importe (z. B. importieren & quot; fmt & quot;) und leere Importe (z. B. Import _ & quot; fmt & quot;). Benannte Importe machen Paketinhalte zugänglich, während leere Importe nur T ausführen

Dieser Artikel beschreibt die effiziente Konvertierung von MySQL -Abfrageergebnissen in GO -Strukturscheiben. Es wird unter Verwendung der SCAN -Methode von Datenbank/SQL zur optimalen Leistung hervorgehoben, wobei die manuelle Parsen vermieden wird. Best Practices für die Struktur -Feldzuordnung mithilfe von DB -Tags und Robus

In diesem Artikel werden die Newflash () -Funktion von BeEGO für die Übertragung zwischen PAGE in Webanwendungen erläutert. Es konzentriert sich auf die Verwendung von Newflash (), um temporäre Nachrichten (Erfolg, Fehler, Warnung) zwischen den Controllern anzuzeigen und den Sitzungsmechanismus zu nutzen. Limita

Dieser Artikel zeigt, dass Mocks und Stubs in GO für Unit -Tests erstellen. Es betont die Verwendung von Schnittstellen, liefert Beispiele für Mock -Implementierungen und diskutiert Best Practices wie die Fokussierung von Mocks und die Verwendung von Assertion -Bibliotheken. Die Articl

In diesem Artikel werden die benutzerdefinierten Typ -Einschränkungen von GO für Generika untersucht. Es wird beschrieben, wie Schnittstellen die minimalen Typanforderungen für generische Funktionen definieren und die Sicherheitstypsicherheit und die Wiederverwendbarkeit von Code verbessern. Der Artikel erörtert auch Einschränkungen und Best Practices

Dieser Artikel beschreibt effizientes Dateischreiben in Go und vergleicht OS.WriteFile (geeignet für kleine Dateien) mit OS.openfile und gepufferter Schreibvorgänge (optimal für große Dateien). Es betont eine robuste Fehlerbehandlung, die Verwendung von Aufschub und Überprüfung auf bestimmte Fehler.

In dem Artikel werden Schreiben von Unit -Tests in GO erörtert, die Best Practices, Spottechniken und Tools für ein effizientes Testmanagement abdecken.

In diesem Artikel wird die Verwendung von Tracing -Tools zur Analyse von GO -Anwendungsausführungsfluss untersucht. Es werden manuelle und automatische Instrumentierungstechniken, den Vergleich von Tools wie Jaeger, Zipkin und Opentelemetrie erörtert und die effektive Datenvisualisierung hervorheben
