0

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

测试用例的数字都搞砸了,例如:

blah_3
blah_1
blah_7
....

我需要重新编号。这样第一个被重新编号为 1,第二个被重新编号为 2.. 等等。我想为此构建一个宏,但我不知道如何开始。我需要某种搜索功能,可以转到我给它的模式,然后用我保存在某个变量中的计数替换数字。我对 Slick-C 一点也不精通,想尽快完成:\

任何帮助表示赞赏,

泰德

4

1 回答 1

1

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

  • 创建一个递增计数器的while循环
  • 在 while 循环中,使用searchwith 正则表达式来查找下一个匹配项
  • 找到下一个匹配项时,使用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++;
  }
}
于 2013-01-23T05:31:12.923 回答