首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >集合/关闭到最近的5

集合/关闭到最近的5
EN

Stack Overflow用户
提问于 2015-11-05 14:37:34
回答 1查看 215关注 0票数 2

我正试着把一张数字列表整理到最近的5和最近的10。

示例:

代码语言:javascript
复制
1562
1706
1665
1378
1439

我创建这段代码是为了把/关闭到最近的5:

代码语言:javascript
复制
:exe "%s/\\d\\d\\d\\d/\\=substitute(submatch(0).'\\.0', '.*', (round(submatch(0)/5)*5), 'g')/g"

在替换的第一部分中,我希望从子匹配值进行浮动,将.0添加到子匹配值。

预期结果:

代码语言:javascript
复制
1560
1705
1665
1380
1440

然而,它给出了一个尾随字符错误。我做错什么了?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-11-05 15:17:31

由于/作为除法运算符出现在替换字符串中,因此需要为:s命令使用另一个分隔符字符。按照文档的说法,这可以是任何其他单字节字符,但不是字母数字字符'\‘、’或‘\’。

要将一个数字n舍入到k的最近的倍数,您可以这样做:

代码语言:javascript
复制
(n + k/2) / k * k

将所有这些放在一起,命令可以是:

代码语言:javascript
复制
:%s!\v\d{4}!\=(submatch(0) + 2) / 5 * 5!
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33547328

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档