Notepad++ CS 脚本循环遍历行并更改特定值

Notepad++ CS 脚本循环遍历行并更改特定值

我之前没有使用过 Notepad++ 中的 CS Script,但是我正在处理几个需要创建脚本的大文件。我通常在 excel 中工作并使用 VBasic,但是这些文件对于 excel 来说太大了。我已经安装了 CS Script 并创建了脚本页面,但对代码一无所知,因此真的需要一些帮助。下面是我拥有的文件中行的示例。

1.  699;2022-06-30 18:44:03.187;1.1.8;2409;Line_1_IP_Router:0/1/0;w;15.9371195;15.9371194999999997;0.000
2.  699;2022-06-30 18:45:03.179;1.1.8;2409;Line_1_IP_Router:0/1/0;w;16.183062;0.245942499999999953;59.992
3.  699;2022-06-30 18:46:03.173;1.1.8;2409;Line_1_IP_Router:0/1/0;w;16.315498;0.132436000000001997;59.994
4.  699;2022-06-30 18:47:03.169;1.1.8;2409;Line_1_IP_Router:0/1/0;w;16.40275;0.0872519999999994411;59.996
5.  699;2022-06-30 18:48:03.163;1.1.8;2409;Line_1_IP_Router:0/1/0;w;16.469275;0.066524999999998613;59.994
6.  699;2022-06-30 18:49:03.154;1.1.8;2409;Line_1_IP_Router:0/1/0;w;16.428036;-0.0412390000000009138;59.991
7.  699;2022-06-30 18:50:03.152;1.1.8;2409;Line_1_IP_Router:0/1/0;w;16.565973;0.137937000000000864;59.998

excel 中的列以 分隔;。我想从第二行开始,循环遍历每一行直到文件末尾。

在每一行上,它应该检查倒数第二列(即倒数第二列之前)的数字是否;为负数。如果不是,它就移动到下一行。如果是负数,它应该更改最后三列中的数字0

因此,根据我上面的例子,它会将第 6 行更改为下面所示的内容。所有其他行将保持不变。

6.  699;2022-06-30 18:49:03.154;1.1.8;2409;Line_1_IP_Router:0/1/0;w;0;0;0

我希望这一切都有意义,并非常感谢任何人的帮助。我相信对于熟悉 CS 脚本的人来说,这是相当基本的代码。提前致谢。

答案1

我不知道 CS 脚本,但这可以使用标准搜索/替换操作 (CTRL+H) 和正则表达式来完成

搜索;[0-9.]*;-[0-9.]*;[0-9.]*$并替换为;0;0;0

解释: [0-9.]*搜索范围为0-9或的任意数量(甚至 0 个)字符.$匹配行尾。该模式还会匹配以 eg 结尾的行

;;-;
;1.2.3;-4..5;6....7

截屏

如果真正的要求是根据前一行的值替换一行中的数据,则会更加困难。

相关内容