首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >查找替代javascript的子字符串

查找替代javascript的子字符串
EN

Stack Overflow用户
提问于 2019-02-21 20:16:45
回答 3查看 996关注 0票数 0

基本上我的问题是,我在变量版本上使用substring方法来获得结果,然后使用ng-href在URL中使用:

代码语言:javascript
复制
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方法最终会停止工作,我如何解决这个问题??

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-02-21 20:30:20

您可以通过另一种方式获得子字符串,方法是删除最后两个字符,这两个字符是一个点和一个数字字符:

代码语言:javascript
复制
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');

但是如果最后有两个数字字符和一个点呢?以下是解决方案:

代码语言:javascript
复制
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');

票数 0
EN

Stack Overflow用户

发布于 2019-02-21 20:26:07

在点上使用splitjoin,在操作数组的过程中,使用slice删除最后一项:

代码语言:javascript
复制
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);
})

非常简单,无论您的版本号是多少,它都能正常工作:)

希望这能对你有所帮助!

票数 0
EN

Stack Overflow用户

发布于 2019-02-21 20:28:53

/^\d+\.\d+/将匹配前两位数字,中间带点。

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

它还将捕获像30..40这样的连续.。和空格。

它甚至可以捕捉像10.B这样的字母部分

如果您想要开始允许诸如-alpha-beta等段,这也将扩展。

代码语言:javascript
复制
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')
})

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54806869

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档