我使用这个正则表达式将千位分隔符放入字符串中:
while matchstr(mystr, '\(\d\)\(\d\{3}\)\(\D\|\s\|$\)') != ''
let mystr = substitute(mystr, '\(\d\)\(\d\{3}\)\(\D\|\s\|$\)', '\1.\2\3', 'g')
endwhile
对于
let mystr = '2000000'
上面的代码给出
2.000.000
问题是,当有小数分隔符时,它还会在小数分隔符(即下面的逗号)后面的数字小数部分中放置千位分隔符。
例如,
let mystr = '2000000,2346'
导致
2.000.000,2.346
虽然我想要这样
2.000.000,2346
我尝试修改上面的代码,但没有找到令人满意的解决方案。 谁能帮我吗?
最佳答案
使用以下对 substitute()
函数的调用而不是整个函数
问题中列出的循环。
substitute(s, '\(\d,\d*\)\@<!\d\ze\(\d\{3}\)\+\d\@!', '&.', 'g')
关于regex - 如何仅在小数分隔符之前插入千位分隔符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10461055/