【问题标题】:Looking for substring alternative javascript寻找子字符串替代javascript
【发布时间】:2019-07-15 08:30:40
【问题描述】:

基本上我的问题是我在变量版本上使用子字符串方法来获取结果,然后使用 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(0,version.length-2)。这样,您将始终从您的版本中修剪最后 2 个符号。
  • 你应该使用Regex

标签: javascript methods substring angularjs-ng-href


【解决方案1】:

相当于substring() 查看 MDN docs

【讨论】:

    【解决方案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);
    })

    足够简单,无论您的版本号如何,它都可以工作:)

    希望对你有所帮助!

    【讨论】:

      【解决方案3】:

      /^\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')
      })

      【讨论】:

        【解决方案4】:

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

        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');

        【讨论】:

          猜你喜欢
          • 2021-12-29
          • 2012-07-29
          • 2011-11-14
          • 2022-12-17
          • 2020-07-14
          • 1970-01-01
          • 1970-01-01
          • 2013-06-23
          • 2021-11-30
          相关资源
          最近更新 更多