我需要添加一段很长的代码,并且更愿意使用脚本而不是自己编写,以免引入错误。
我的命令看起来像这样
rename oldname newname
rename oldname2 newname2
我想,每当我看到命令“重命名”时,我想添加一个“注释”命令
rename oldname newname
note newname: "A Note"
rename oldname2 newname2
note newname2: "A Note"
我正在使用Julia的读写功能来实现这一目标,到目前为止它非常容易。
f = open("renaming.txt") # open input file
g = open("renaming_output.txt", "w") # open output file
for ln in eachline(f)
write(g, "$ln \n") # write the command, no matter what it is
stripped = lstrip("$ln") # Strip whitespace so I can use "startswith" command
if startswith(stripped, "ren")
words = split("$ln", " ") # split on space to get the "newvar" name
println("$ln \n") #check that I am working with a rename command
println("note ", words[3]":") # check that the note function prints
note_command = string("note ", words[3], ": \n") # construct the note command
write(g, note_command) #write it to the output file.
end
end
我的问题是缩进。上面的代码在最左边写了“note”命令,没有任何缩进。但是,理想情况下,我希望note命令比rename命令缩进一级。但我无法弄清楚如何捕获所有前面的空格。
我认为答案涉及使用match
和m.match
函数,但我无法使其工作。
任何帮助将不胜感激。
答案 0 :(得分:1)
在Julia 0.7上,代码中最简单的变化就是替换
println("note ", words[3]":")
与
println(first(ls, search(ls, 'r')-1), " note ", words[3]":")
使用正则表达式,您可以在代码的开头编写rx = r"(?:(?!r).)*"
,然后:
println(match(rx, ls).match, " note ", words[3]":")
在这两种情况下,我们都会保持原始格式ls
到'r'
的开头。
答案 1 :(得分:1)
使用Julia 6.1,我的解决方案,在答案的帮助下,如下
leftpad = ^ search("$ln", 'r')
r
是关键的补充。鉴于我的代码的左边填充总是标签,我只是插入标签的数量,因为在第一个LIKE
之前有字符。此解决方案适用于0.6.1,但搜索在.7中的行为可能不同。