寻找替代子串 javascript
Looking for substring alternative javascript
基本上我的问题是我在变量版本上使用 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)
正如您所看到的,子字符串方法最终停止工作,我该如何解决这个问题??
在点上使用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);
})
足够简单,无论你的版本号是多少,它都可以工作:)
希望对您有所帮助!
/^\d+\.\d+/
将匹配前 2 个带点的数字。
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')
})
您可以通过删除最后两个字符(一个点和一个数字字符)来获取子字符串:
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');
相当于substring()
查看 MDN docs
基本上我的问题是我在变量版本上使用 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)
正如您所看到的,子字符串方法最终停止工作,我该如何解决这个问题??
在点上使用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);
})
足够简单,无论你的版本号是多少,它都可以工作:)
希望对您有所帮助!
/^\d+\.\d+/
将匹配前 2 个带点的数字。
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')
})
您可以通过删除最后两个字符(一个点和一个数字字符)来获取子字符串:
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');
相当于substring()
查看 MDN docs