Go语言开发的文本编辑器
2024-05-16

package main

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

func openFile(filePath string) string {
    file, err := ioutil.ReadFile(filePath)
    if err != nil {
        return ""
    }
    return string(file)
}

func searchFile(content string, keyword string) {
    scanner := bufio.NewScanner(strings.NewReader(content))
    for scanner.Scan() {
        line := scanner.Text()
        if strings.Contains(line, keyword) {
            fmt.Println(line)
        }
    }
}

func replaceFile(filePath string, old string, new string) {
    file, err := ioutil.ReadFile(filePath)
    if err != nil {
        return
    }
    content := string(file)
    newContent := strings.ReplaceAll(content, old, new)
    err = ioutil.WriteFile(filePath, []byte(newContent), 0644)
    if err != nil {
        return
    }
}

func main() {
    var filePath, keyword, old, new string
    fmt.Println("请输入文件路径:")
    fmt.Scanln(&filePath)
    content := openFile(filePath)
    if content == "" {
        fmt.Println("文件打开失败")
        return
    }

    fmt.Println("请输入要查找的关键字:")
    fmt.Scanln(&keyword)
    searchFile(content, keyword)

    fmt.Println("请输入要替换的关键字:")
    fmt.Scanln(&old)
    fmt.Println("请输入替换后的内容:")
    fmt.Scanln(&new)
    replaceFile(filePath, old, new)

    fmt.Println("文件编辑完成,是否保存?(Y/N)")
    var choice string
    fmt.Scanln(&choice)
    if strings.ToUpper(choice) == "Y" {
        fmt.Println("文件保存成功")
    } else {
        fmt.Println("文件未保存")
    }
}
登录后复制