我正在为独立游戏DwarfFortress开发一个模块的最后阶段。在MOD处于工作状态之前需要做的最后一件事是通过并改变Dwarf Fortress RAWs - 包含数百种填充游戏的生物的信息的二十多个文本文件。查找并替换文本文件目录中的单词
从技术角度来看,这是通过一个文本文件目录,并基本上执行“查找和替换”操作来改变每一行。
我的大部分编程经验都是面向对象的语言--C#和Java,以及一些Assembler和C的经验。但是,这些语言都不适合这种任务。
其中一个可能会是一个非常简单的替代品,就是因为矮人堡垒RAW的编写方式,我不知道是否需要更换该行,直到进一步放下文本文件。以下是一个简短的示例场景。
[CREATURE:WOLF]
...
[Many irrelevant lines of tokens]
...
[BODY_DETAIL_PLAN:STANDARD_MATERIALS]
[BODY_DETAIL_PLAN:STANDARD_TISSUES]
...
[Many more irrelevant lines of tokens]
...
[MULTIPLY_VALUE:2]
我希望写需要能够通过对读取到的程序[MULTIPLY_VALUE:X]线,然后返回并替换包含两行:与[BODY_DETAIL_PLAN Z] [BODY_DETAIL_PLAN:Y],其中Y的变化取决于X的读取值
我可以保证两两件事:
- 在最一个[MULTIPLY_VALUE:X]行会之间出现[生物:A]和[生物: B]或[CREATURE:Z]和文件的结尾。
- [MULTIPLY_VALUE:X]行会始终在之后行[BODY_DETAIL_PLAN:Z]行,如果它出现在该生物上。
基于我所拥有的编码经验,我最接近一个可行的想法是编写一个C程序来读取文件,使用指针来'保存'读取行的位置,并在文件阅读器检测到新RAW的开始。
但是,这让我觉得不够优雅,并且遇到了麻烦,因为我没有经验在C(或任何语言)中实现查找/替换功能。
是否有一些更简单的方法来完成这个手工审阅每个文本文件的单调任务?我完全愿意学习一种新的编程语言,但我不完全知道哪种语言最容易处理这种情况。
对此提出建议?
看起来像Perl,Python或Ruby等脚本语言的完美任务。那些语言在早餐上做这种事情。一个问题虽然..可以在文件中的其他地方有一个MULTIPLY行吗?即你是否需要智能来在CREATURE段中找到它,或者你是否可以盲目地替换整个文件中的任何MULTIPLY行? – Casper
@Casper - 是的,我认为脚本语言可能工作,但我没有脚本语言的经验,因此是一个问题。问题在于它不是需要替换的MULTIPLY行,而是MULTIPLY行的存在决定了用*替换单独行的方式。 –