我已经实现了一个ruby脚本,该脚本应该生成&将默认代码段插入正确的位置。问题是其中一些代码必须遵守现有代码的字母顺序。
例如,假设我们需要在以下代码中插入单词'thumb'(在本例中为UPDATEFIELD((&(thumb)), ([custominputstream readString]));
)的代码片段:
//...
UPDATEFIELD((&(answers)), ((ListTO *)[custominputstream readCustomSerializable]));
UPDATEFIELD((&(text)), ([custominputstream readString]));
UPDATEFIELD((&(title)), ([custominputstream readString]));
//...
希望的结果是:
//...
UPDATEFIELD((&(answers)), ((ListTO *)[custominputstream readCustomSerializable]));
UPDATEFIELD((&(text)), ([custominputstream readString]));
UPDATEFIELD((&(thumb)), ([custominputstream readString])); //here is the right place to do it.
UPDATEFIELD((&(title)), ([custominputstream readString]));
//...
问题是如何找到这个用正则表达式插入文本的精确位置/它是否可能?
答案 0 :(得分:0)
您当前的单词顺序是
answers < text < title
解决问题的方法是从顶部读取文件并在中心处打开文件。
在你的情况下是
UPDATEFIELD((&(text)), ([custominputstream readString]));
阅读
/(?<=UPDATEFIELD\(\(&\()\w+(?=\))/
字符串
这只不过是text
然后将它与您的单词进行比较。在您的情况下恰好是thumb
if 'thumb' < 'text'
#place it above text
else #(which is obvious) then
#place it below
end
订单变为
answers < text < thumb < title
你的文件非常大,因此你可能需要重复相同的练习,直到达到目标。
我们正在binary search到达我们需要插入字词的地方。