我的编程空间,编程开发者的网络收藏夹
学习永远不晚

用golang如何替换某个文件中的字符串

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

用golang如何替换某个文件中的字符串

用golang实现了某个文件中字符的替换,替换为按行替换,执行后会生成新文件,如a.txt,执行后生成a.txt.mdf。新文件即修改后的内容。

主要用来练习文件的读取与写入


package main 
import (
	"bufio"
	"fmt"
	"io"
	"os"
	"strings"
)
 
func main() {
	if len(os.Args) != 4 {
		fmt.Println("lack of config file, eg: go run main.go ${path_of_file} ${old_string} ${new_string}")
		os.Exit(-1)
	}
	fileName := os.Args[1]
	in, err := os.Open(fileName)
	if err != nil {
		fmt.Println("open file fail:", err)
		os.Exit(-1)
	}
	defer in.Close()
 
	out, err := os.OpenFile(fileName+".mdf", os.O_RDWR|os.O_CREATE, 0766)
	if err != nil {
		fmt.Println("Open write file fail:", err)
		os.Exit(-1)
	}
	defer out.Close()
 
	br := bufio.NewReader(in)
	index := 1
	for {
		line, _, err := br.ReadLine()
		if err == io.EOF {
			break
		}
		if err != nil {
			fmt.Println("read err:", err)
			os.Exit(-1)
		}
		newLine := strings.Replace(string(line), os.Args[2], os.Args[3], -1)
		_, err = out.WriteString(newLine + "\n")
		if err != nil {
			fmt.Println("write to file fail:", err)
			os.Exit(-1)
		}
		fmt.Println("done ", index)
		index++
	}
	fmt.Println("FINISH!")
}

执行结果:

源文件:

将空格替换为逗号:

新文件:

补充:golang关于字符串替换的建议

运行下面一段代码


package main
import (
 "fmt"
 "regexp"
)
func main() {
 tmp := "/Users/max/Downloads/test/website\\nbackup\n"
 buf := []byte(tmp)
 a := "/Users/max/Downloads/test/website\\nbackup"
 r := regexp.MustCompile(a + "\n")
 taskText := r.ReplaceAllString(string(buf[:]), "")
 fmt.Println(r.String() == string(buf[:]))
 fmt.Printf("%q\n", r.String())
 fmt.Printf("%q\n", string(buf[:]))
 fmt.Printf("%q\n", taskText)
}

结果输出:

true

"/Users/max/Downloads/test/website\\nbackup\n"

"/Users/max/Downloads/test/website\\nbackup\n"

"/Users/max/Downloads/test/website\\nbackup\n"

可以发现,字符串并没有被替换

然后,我们更改一句代码


package main
import (
 "fmt"
 "regexp"
 "strings"
)
func main() {
 tmp := "/Users/max/Downloads/test/website\\nbackup\n"
 buf := []byte(tmp)
 a := "/Users/max/Downloads/test/website\\nbackup"
 r := regexp.MustCompile(a + "\n")
 // taskText := r.ReplaceAllString(string(buf[:]), "")
 taskText := strings.ReplaceAll(string(buf[:]), r.String(), "")
 fmt.Println(r.String() == string(buf[:]))
 fmt.Printf("%q\n", r.String())
 fmt.Printf("%q\n", string(buf[:]))
 fmt.Printf("%q\n", taskText)
}

结果输出:

true

"/Users/max/Downloads/test/website\\nbackup\n"

"/Users/max/Downloads/test/website\\nbackup\n"

""

可以发现,字符串可以被替换

所以,建议在使用字符串替换时,避免使用正则表达式的ReplaceAllString方法,而应该选择更为稳妥的strings包中的ReplaceAll方法。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。如有错误或未考虑完全的地方,望不吝赐教。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

用golang如何替换某个文件中的字符串

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

用golang怎么替换某个文件中的字符串

这篇文章主要介绍了用golang怎么替换某个文件中的字符串,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。golang的优点golang是一种编译语言,可以将代码编译为机器代码
2023-06-14

sql如何替换字符串中的某个字符

在SQL中,可以使用REPLACE()函数来替换字符串中的某个字符。REPLACE()函数接受三个参数,第一个参数是要被替换的原始字符串,第二个参数是要被替换的字符,第三个参数是替换后的字符。例如,以下是一个使用REPLACE()函数来替换
sql如何替换字符串中的某个字符
2024-04-09

mysql替换字符串中的某个字符

mysql 提供了多种替换字符串字符的方法,包括:1. replace() 函数;2. substr() 和 concat() 函数;3. 正则表达式;4. coalesce() 函数。选择合适的方法根据具体情况而定。如何用 MySQL 替
mysql替换字符串中的某个字符
2024-08-01

php字符串如何替换某个字符为空

今天小编给大家分享一下php字符串如何替换某个字符为空的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。php字符串替换某个字符
2023-07-05

php怎么替换字符串中的某个字符

在PHP中,可以使用str_replace()函数来替换字符串中的某个字符。```php$str = "Hello World";$newStr = str_replace("o", "!", $str);echo $newStr; //
2023-08-23

python怎么替换字符串中的某个字符

在Python中,你可以使用字符串的`replace()`方法来替换字符串中的某个字符。`replace()`方法需要传入两个参数,第一个参数是要被替换的字符,第二个参数是替换后的字符。以下是一个示例:```pythonstring = "
2023-08-31

linux如何替换文件中的字符串

这篇文章主要为大家展示了“linux如何替换文件中的字符串”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“linux如何替换文件中的字符串”这篇文章吧。在linux中,可以利用sed命令来查找和替
2023-06-29

oracle中如何替换多个字符串

在Oracle中,可以使用`REPLACE`函数来替换多个字符串。例如,假设我们有一个名为`EMPLOYEES`的表,其中有一个名为`JOB_TITLE`的列,我们想将其中的多个字符串替换为新的字符串。我们可以使用以下语句:```sqlUP
2023-09-12

php如何替换字符串中第一个字符

小编给大家分享一下php如何替换字符串中第一个字符,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!在PHP中,可以使用substr_replace()函数来替换字符
2023-06-15

linux如何替换文本中的字符串

在Linux中,可以使用`sed`命令来替换文本中的字符串。`sed`命令的基本语法如下:```sed s/要替换的字符串/替换后的字符串/g 文件名```其中,`s`代表替换操作,`/`是分隔符,`要替换的字符串`是需要被替换的字符串,`
2023-10-08

PHP如何使用一个字符串替换字符串中的另一些字符

PHP提供了多种字符串替换函数,包括:str_replace:查找并替换子字符串preg_replace:使用正则表达式替换字符串substr_replace:替换特定位置的子字符串strtr:将字符转换为其他字符str_ireplace:执行不区分大小写的字符串替换了解这些函数对于修改字符串和提取或替换特定字符非常重要。它们可以应用于各种情况,例如文本处理、数据验证和字符串格式化。
PHP如何使用一个字符串替换字符串中的另一些字符
2024-04-02

Python如何使用一个字符串替换字符串中的另一些字符

Python提供两种常用方法替换字符串:str.replace()方法:可指定要替换的子字符串和新的子字符串,并控制替换数量。re.sub()函数:使用正则表达式进行更灵活的替换,可匹配复杂模式。此外,还有其他方法可用于替换字符串:str.format()方法、字符串分片、collections.Counter类等。
Python如何使用一个字符串替换字符串中的另一些字符
2024-04-02

Java如何使用一个字符串替换字符串中的另一些字符

本文介绍了在Java中替换字符串字符的几种方法:使用String.replace():查找并替换指定字符或子字符串。使用String.replaceAll():使用正则表达式查找并替换字符或子字符串。使用String.replaceFirst():只替换第一个匹配项。使用StringBuilder.append()和.toString():高效修改字符串。使用ApacheCommonsLangStringUtils类:提供丰富字符串处理方法。选择最合适的替换方法取决于具体需求和性能考虑因素。
Java如何使用一个字符串替换字符串中的另一些字符
2024-04-02

java怎么替换文件中的字符串

Java中替换文件中的字符串可以使用以下步骤:1. 打开要进行替换的文件。2. 读取文件内容。3. 使用`String`的`replaceAll`方法替换指定的字符串。4. 将替换后的内容写回文件。5. 关闭文件。下面是一个简单的示例代码:
2023-09-20

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录