如何裁剪特定的文本?

huangapple go评论116阅读模式
英文:

How to trim specific text

问题

我有一个文件中的一些文本。文本如下:

  1. #cat tmp
  2. host = "192.168.2.80"
  3. port = 5432
  4. user = "pnmsuser"
  5. password = "PNMS$$$$$$"
  6. dbname = "pnms"

我想要将文本修整为以下形式:

  1. "192.168.2.80"
  2. 5432
  3. "pnmsuser"
  4. "PNMS$$$$$$"
  5. "pnms"

我尝试了以下修整的方法:

  1. func dbFileTrimming() {
  2. dat, err := ioutil.ReadFile("tmp")
  3. check(err)
  4. for key, line := range strings.Split(strings.TrimRight(string(dat), "\n"), "\n") {
  5. // println(key, line)
  6. if key == 3 {
  7. line := string([]rune(line)[11:])
  8. fmt.Println(line)
  9. } else if key == 4 {
  10. line := string([]rune(line)[9:])
  11. fmt.Println(line)
  12. } else {
  13. line := string([]rune(line)[7:])
  14. fmt.Println(line)
  15. }
  16. }
  17. }

是否有更简单的方法来实现这个目标?

英文:

I have some text in file.Text like below:

  1. #cat tmp
  2. host = "192.168.2.80"
  3. port = 5432
  4. user = "pnmsuser"
  5. password = "PNMS$$$$$$"
  6. dbname = "pnms"

Just I want text like below after trimming:

  1. "192.168.2.80"
  2. 5432
  3. "pnmsuser"
  4. "PNMS$$$$$$"
  5. "pnms"

I try to trim like below

  1. func dbFileTrimming() {
  2. dat, err := ioutil.ReadFile("tmp")
  3. check(err)
  4. for key, line := range strings.Split(strings.TrimRight(string(dat), "\n"), "\n") {
  5. // println(key, line)
  6. if key == 3 {
  7. line := string([]rune(line)[11:])
  8. fmt.Println(line)
  9. } else if key == 4 {
  10. line := string([]rune(line)[9:])
  11. fmt.Println(line)
  12. } else {
  13. line := string([]rune(line)[7:])
  14. fmt.Println(line)
  15. }
  16. }
  17. }

Is there a simple method for this?

答案1

得分: 1

= 后面的内容截取出来:

  1. for _, line := range strings.Split(strings.TrimRight(string(dat), "\n"), "\n") {
  2. line = line[strings.Index(line, " = ")+3:]
  3. fmt.Println(line)
  4. }
英文:

Chop the line after the =:

  1. for _, line := range strings.Split(strings.TrimRight(string(dat), "\n"), "\n") {
  2. line = line[strings.Index(line, " = ")+3:]
  3. fmt.Println(line)
  4. }

答案2

得分: 1

这看起来像是一个INI文件,或者类似的文件,可以使用像go-ini这样的库来处理。

另外,你可以尝试使用Strings.split()函数,并将结果放入一个map中。下面是一个简单而未经测试的示例代码:

  1. result := map[string]string{}
  2. for _, line := range strings.Split(string(dat), "\n") {
  3. split := strings.Split(line, "=")
  4. key := strings.Trim(split[0], " ")
  5. value := strings.Trim(split[1], " ")
  6. result[key] = value
  7. }
英文:

This looks like an INI file, or similar enough so that libraries like go-ini could work.

Alternatively, try Strings.split() and putting the result in a map. Quick and dirty / untested:

  1. result := map[string]string
  2. for _, line := range strings.Split(string(dat), "\n") {
  3. split := strings.Split(line, "=")
  4. key := strings.Trim(split[0])
  5. value := strings.Trim(split[0])
  6. result[key] = value
  7. }

huangapple
  • 本文由 发表于 2021年6月28日 22:42:19
  • 转载请务必保留本文链接:https://go.coder-hub.com/68165372.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定