【问题标题】:Golang Write formated strings to fileGolang 将格式化的字符串写入文件
【发布时间】:2021-08-24 03:10:12
【问题描述】:

我正在尝试打开包含以下内容的文件:

MOT021L3
MLK407L3
MLK485L3
  • 我正在读取文件并创建切片。从那个切片中,我想遍历它并删除“L3”。保留 MOT021。

我能够成功地将输出打印到终端,但我不确定如何将数据添加到具有相同格式的文件中。正在写入文件的输出是:

MOT021L3MLK407L3MLK485L3

我在新文件中寻找的结果是。

MOT021
MLK407
MLK485

代码:

package main

import (
    "fmt"
    "io/ioutil"
    "os"
    "strings"
)

func main() {
    //Read File
    n, err := ioutil.ReadFile("box_1")
    if err != nil {
        fmt.Println(err)
    }
    a := string(n)

    sliceData := strings.Split(string(a), "\n")

    f, err := os.Create("box_2")
    if err != nil {
        fmt.Println(err)
    }
    defer f.Close()

    //var trimmedSlice string
    for _, i := range sliceData {
        trimmedSlice := (strings.TrimSuffix(i, "L3"))
        fmt.Println(trimmedSlice)
        f.Write([]byte(trimmedSlice))
    }
    f.Close()

}

【问题讨论】:

  • 看来您在阅读"\n" 时知道如何去掉它。写出来的时候需要加回来。

标签: go slice


【解决方案1】:

这似乎可以做到:

package main

import (
   "bufio"
   "os"
)

func main() {
   in, e := os.Open("in.txt")
   if e != nil {
      panic(e)
   }
   defer in.Close()
   out, e := os.Create("out.txt")
   if e != nil {
      panic(e)
   }
   defer out.Close()
   s := bufio.NewScanner(in)
   for s.Scan() {
      out.WriteString(s.Text()[:6] + "\n")
   }
}

https://golang.org/pkg/os#File.WriteString

【讨论】:

  • 谢谢。我知道我应该使用 bufio。我到处学习不同的包。这让一切都变得更干净了。欣赏它。
猜你喜欢
  • 2015-12-14
  • 1970-01-01
  • 2013-08-10
  • 2021-12-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-03
相关资源
最近更新 更多