一个简单的文本完成/编辑/自动更正工具

165 阅读2分钟

自动完成文本的工具

这是我用Go创建的一个简单的文本完成/编辑/自动更正工具。

该工具接收以下参数。

  • 包含需要修改的文本的文件名(例如 sample.txt)。
  • 修改后的文本将被输出的文件名(如 result.txt)。

我从这个项目中学到了什么?

- A good understanding of the Go file system(fs) API
- String and number manipulation

下面是该工具可以执行的可能的修改的列表。

  • (hex) 的每个实例都应该用该词的十进制版本替换之前的词(在这种情况下,该词将总是一个十六进制数字)。(例如:"1E(十六进制)文件被添加"->"30个文件被添加")
  • (bin) 的每个实例都应该用该词的十进制版本替换之前的词(在这种情况下,该词将始终是一个二进制数字)。(例如:"已经过了10(bin)年"->"已经过了2年")
  • (up) 的每个实例都会将放在前面的单词转换为大写版本。(例如:"准备好了,准备好了,走(了)!"-> "准备好了,准备好了,走!")
  • (low) 的每个实例都会将前面的单词转换成小写版本。(例如:"我应该停止喊叫(低)"->"我应该停止喊叫")。
  • (cap) 的每个实例都会将前一个词转化为其大写版本。(例如:"欢迎来到布鲁克林大桥(cap)" -> "欢迎来到布鲁克林大桥")
    • 对于(low),(up),(cap) ,如果它旁边出现一个数字,像这样:(low, <number>) ,它就会把之前指定的字数相应地变成小写、大写或大写。(例如:"这太令人兴奋了(向上,2)"->"这太令人兴奋了")
  • 每一个标点符号.,,,!,?,:; 的实例都应该紧靠前一个词,并与下一个词有一定的间隔。(例如:"我坐在那里,然后BAMM !"-> "我坐在那里,然后BAMM!!")。
    • 但如果有一组标点符号,如:...!? 。在这种情况下,程序应将文本格式化,如下例所示。"我在想......你是对的" -> "我在想......你是对的"。
  • 标点符号' ,总能找到它的另一个实例,它们应该放在它们中间的单词的左右两边,没有任何空格。(例:"我正是他们所描述的我:'真棒'" -> "我正是他们所描述的我:'真棒'")
    • 如果在两个' ' 标记之间有一个以上的词,程序应该把标记放在相应的词旁边(例如:"正如埃尔顿-约翰所说:'我是世界上最知名的同性恋者'" -> "正如埃尔顿-约翰所说:'我是世界上最知名的同性恋者'")
  • 如果下一个词以元音或h 开始,每一个a 的例子都应该变成an 。(例如:"在那里,一块神奇的岩石!"->"在那里,一块神奇的岩石!")。

例子/使用方法

$ cat sample.txt
it (cap) was the best of times, it was the worst of 

GitHub

查看Github