需要在Slick-C中创建宏来重新枚举

时间:2013-01-07 22:34:35

标签: slickedit

我在XML文件中有一堆测试用例,名为:blah_blah_blah_blah_number

测试用例的数字全部搞砸了如下:

blah_3
blah_1
blah_7
....

我需要重新编号。这样第一个重新编号为1,第二个重命名为2 ..依此类推。我想为此构建一个宏但我不知道如何开始。我需要某种搜索功能,可以转到我给它的模式,然后用一个我保留在某个变量中的计数代替数字。我对Slick-C并不擅长,并希望能够快速完成这项任务:\

任何帮助表示赞赏,

泰德

1 个答案:

答案 0 :(得分:1)

要获得更及时的答案,您可以考虑在slickedit.com上使用SlickEdit论坛,但我会在这里尝试。
我会将文件加载到缓冲区中,并沿着以下行创建一个宏:

  • 创建一个递增计数器的while循环
  • 在while循环中,使用带有正则表达式的search来查找下一个匹配项
  • 当找到下一个匹配项时,使用search_replace将找到的字符串替换为使用计数器变量组成的新字符串,并重复上一次搜索
  • 如果不再找到任何内容,请终止循环

如果不在XML文件上进行测试,这应该为您的功能提供一个开始(假设您知道如何创建宏文件并将其加载到SE中),快速测试表明它可以在纯文本文件上运行,但不保证:

/* Demo for StackOverflow question 14205293 */
_command my_renumber() name_info(','VSARG2_MARK|VSARG2_REQUIRES_EDITORCTL)
{
  int not_found = 0; /* boolean to terminate loop */
  int iLoop = 0;     /* Counter to renumber items */

  /* Use search initially; if that call doen't find an item, we're done. */
  if (search('blah_:i', 'R') != 0)
  {
    not_found = 1;
  }

  while (!not_found)
  {
    if (search_replace('blah_' :+ iLoop, 'R') == STRING_NOT_FOUND_RC)
    {
      not_found = 1;
    }
    iLoop++;
  }
}