2

基本上我的问题是我在变量版本上使用子字符串方法来获取结果,然后使用 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)

如您所见,子字符串方法最终停止工作,我该如何解决这个问题?

4

4 回答 4

6

相当于substring() 检查 MDN文档

于 2021-12-15T12:56:22.897 回答
2

在点上使用splitjoin,在您操作数组期间,使用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-21T12:26:07.423 回答
1

/^\d+\.\d+/将匹配前 2 位数字与点之间。

regex不必像方法那样处理整个输入split

它也会连续接住.like 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')
})

于 2019-02-21T12:28:52.507 回答
0

您可以通过删除最后两个字符(一个点和一个数字字符)以另一种方式获取子字符串:

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-21T12:30:19.853 回答