我正试着把一张数字列表整理到最近的5和最近的10。
示例:
1562
1706
1665
1378
1439我创建这段代码是为了把/关闭到最近的5:
:exe "%s/\\d\\d\\d\\d/\\=substitute(submatch(0).'\\.0', '.*', (round(submatch(0)/5)*5), 'g')/g"在替换的第一部分中,我希望从子匹配值进行浮动,将.0添加到子匹配值。
预期结果:
1560
1705
1665
1380
1440然而,它给出了一个尾随字符错误。我做错什么了?
发布于 2015-11-05 15:17:31
由于/作为除法运算符出现在替换字符串中,因此需要为:s命令使用另一个分隔符字符。按照文档的说法,这可以是任何其他单字节字符,但不是字母数字字符'\‘、’或‘\’。
要将一个数字n舍入到k的最近的倍数,您可以这样做:
(n + k/2) / k * k将所有这些放在一起,命令可以是:
:%s!\v\d{4}!\=(submatch(0) + 2) / 5 * 5!https://stackoverflow.com/questions/33547328
复制相似问题