基本上我的问题是,我在变量版本上使用substring方法来获得结果,然后使用ng-href在URL中使用:
substring(0, 3)
version 9.1.0 = 9.1 (good)
version 9.2.0 = 9.2 (good)
version 9.3.0 = 9.3 (good)
..
version 9.10.0 = 9.1 (breaks here)
version 10.1.0 = 10. (breaks here)正如您所看到的,substring方法最终会停止工作,我如何解决这个问题??
发布于 2019-02-21 20:30:20
您可以通过另一种方式获得子字符串,方法是删除最后两个字符,这两个字符是一个点和一个数字字符:
function version(val){
console.log(val.substring(0,val.length-2))
}
version('9.1.0');
version('9.2.0');
version('9.3.0');
version('9.10.0');
version('10.1.0');
但是如果最后有两个数字字符和一个点呢?以下是解决方案:
function version(val){
var tempVersion = val.split('.');
tempVersion.pop();
console.log(tempVersion.join('.'))
}
version('9.1.0');
version('9.2.0');
version('9.3.1020');
version('9.10.0');
version('10.1.0123');
发布于 2019-02-21 20:26:07
在点上使用split和join,在操作数组的过程中,使用slice删除最后一项:
const inputs = ['9.1.0', '9.2.0', '9.3.0', '9.10.0', '10.1.0', '22.121.130'];
inputs.forEach(input => {
const result = input.split('.').slice(0, -1).join('.');
console.log(input, '=>', result);
})
非常简单,无论您的版本号是多少,它都能正常工作:)
希望这能对你有所帮助!
发布于 2019-02-21 20:28:53
/^\d+\.\d+/将匹配前两位数字,中间带点。
regex不必像split方法那样处理整个输入。
它还将捕获像30..40这样的连续.。和空格。
它甚至可以捕捉像10.B这样的字母部分
如果您想要开始允许诸如-alpha、-beta等段,这也将扩展。
const rx = /^\d+\.\d+/
const inputs = ['9.1.0', '9.2.0', '9.3.0', '9.10.0',
'10.1.0', , '22.121.130', '10.A', '10..20', '10. 11', '10 .11'];
inputs.forEach(input => {
const m = rx.exec(input)
console.log(input, m ? m[0] : 'not found')
})
https://stackoverflow.com/questions/54806869
复制相似问题