自动完成文本的工具
这是我用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