Как найти и заменить что-то в цитате? - PullRequest
0 голосов
/ 06 августа 2020

Я нашел эту Go программу, которая будет искать и удалять текст в файле, и мне нужна помощь.

Как мне изменить эту программу, чтобы получить следующее и заменить его?

Я пробовал кое-что, но проблема в том, что внутри строки есть другая кавычка.

Текущее:

{"telephone_numbers":["1-

Будущее:

{"telephone_numbers":["+1-

Найти и заменить скрипт.

package main

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

func visit(path string, fi os.FileInfo, err error) error {
        if err != nil {
                return err
        }

        if !!fi.IsDir() {
                return nil //
        }

        matched, err := filepath.Match("*.txt", fi.Name())
        if err != nil {
                panic(err)
                return err
        }

        if matched {
                read, err := ioutil.ReadFile(path)
                if err != nil {
                        panic(err)
                }
                //fmt.Println(string(read))
                fmt.Println(path)

                newContents := strings.Replace(string(read), "old", "new", -1)

                fmt.Println(newContents)

                err = ioutil.WriteFile(path, []byte(newContents), 0)
                if err != nil {
                        panic(err)
                }
        }

        return nil
}

func main() {
        err := filepath.Walk(".", visit)
        if err != nil {
                panic(err)
        }
}

1 Ответ

0 голосов
/ 06 августа 2020

Это ответ.

package main

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

func visit(path string, fi os.FileInfo, err error) error {

        if err != nil {
                return err
        }

        if !!fi.IsDir() {
                return nil //
        }

        matched, err := filepath.Match("*.txt", fi.Name())

        if err != nil {
                panic(err)
                return err
        }

        if matched {
                read, err := ioutil.ReadFile(path)
                if err != nil {
                        panic(err)
                }
                //fmt.Println(string(read))
                fmt.Println(path)

                newContents := strings.Replace(string(read), `{"telephone_numbers":["1-`, `{"telephone_numbers":["+1-`, -1)

                fmt.Println(newContents)

                err = ioutil.WriteFile(path, []byte(newContents), 0)
                if err != nil {
                        panic(err)
                }

        }

        return nil
}

func main() {
        err := filepath.Walk(".", visit)
        if err != nil {
                panic(err)
        }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...