本文介绍了打破串分解成三个组块,但与二的最小计数的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我需要的数字字符串分解成三大块,但我不能让一大块只包含一个数字,它必须包含至少两个。
例如
[123],[456],[7]
- 这是不能接受的,因为 7
留在它自己的
[123],[45],[67]
- 这是可以接受的解决方案。
我得差不多了,但我不知道如何处理并确保至少有两个数字。
下面是我的解决方案,这打破了串分解成三个部分,但不占最低位计数:
功能的解决方案(S){
变种数= s.replace(/ \\ D /克,'');
数= number.match(/ {1,3} /克); //分解成三分球
数= number.join(' - ');
返回数;
}
下面是一个codePEN看到它在行动:
解决方案
您可以使用正则表达式与前瞻。
的<一个href=\"https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Ex$p$pssions#special-lookahead\"相对=nofollow>正先行查找等号后的格局,但不包括其在比赛中。
function format(s) {
return s.toString().replace(/\d{2,3}(?=..)/g, '$&-');
}
document.write(format(123456789) + '<br>');
document.write(format(12345678901) + '<br>');
document.write(format(1234567) + '<br>');
Edit
While I do not find, that an extra loop via an array is necessary, this proposal gives you the wanted step with String#match()
for later joining the array with the following regular expression:
var a, i, s = '';
for (i = 1; i < 10; i++) {
s += i;
a = s.match(/.{2,3}(?=..)|.+/g);
document.write(a.join('-') + '<br>');
}
这篇关于打破串分解成三个组块,但与二的最小计数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!