【问题标题】:Javascript find index of first non alphabetic char from certain positionJavascript从某个位置查找第一个非字母字符的索引
【发布时间】:2015-08-31 20:16:48
【问题描述】:

我想从某个位置找到 indexOF 第一个非 aplhabetic char

Example

abc4sss5gggg10

我想获得 5 的位置,但要指定我开始搜索的位置

【问题讨论】:

标签: javascript string indexof


【解决方案1】:

结合使用正则表达式和子字符串函数:

var str = "abc4sss5gggg10";
var indexToSearchFrom = 6;
var index = str.substring(indexToSearchFrom).search(/[^A-Za-z]/);

【讨论】:

  • [^A-Z]/i 也可以使用。少打字
【解决方案2】:

获取第 4 个位置之后的第一个非 alpha 字符的索引。

> 'abc4sss5gggg10'.replace(/^.{4}/, "").match(/[^a-z]/i)
[ '5',
  index: 3,
  input: 'sss5gggg10' ]
> 'abc4sss5gggg10'.replace(/^.{4}/, "").match(/[^a-z]/i)['index']
3

【讨论】:

    【解决方案3】:

    我认为这是你需要的:

    我修改了 Mathijs Segers 的代码,使其看起来像这样:

    function StartSearching(str, startFrom) {
       for (var i = startFrom; i<str.length;i++) {
          if (!isNaN(str[i])) {
             return i;
          }
       }
    }
    

    【讨论】:

      【解决方案4】:

      首先考虑这篇文章Return positions of a regex match() in Javascript?

      然后知道要找到你必须使用的第一个数值

      var n = 2; // my starting position
      var match = /[0-9]/.exec("abc4sss5gggg10".substring(n));
      if (match) {
          alert("match found at " + match.index);
      }
      

      使用substring删除前n个字符

      【讨论】:

      • 是,但指定开始搜索的位置
      • 如何查找所有非字母字符。这只会找到数字。
      【解决方案5】:

      你的第一个想法可能是正则表达式,虽然这些很重,但我可能会去类似

      getFirstNonAlpha(str) {
         for (var i = 0; i<str.length;i++) {
            if (!isNaN(str[i]) {
               return i;
            }
         }
         return false;
      }
      

      isNaN 表示 isnotanumber,所以如果它匹配一个数字,它将返回 false,您可以返回索引。

      如果这甚至是一个问题,请检查您需要哪个以及哪个速度更快。此外,此功能不会帮助您!@#$%^&*()_ 等。

      【讨论】:

        【解决方案6】:
        var str = "abc4sss5gggg10";
        
        function searchIndex(index, strng) {
            var arr = strng.split("");
            for (var i = index; i < arr.length; i++) {
                if (!isNaN(arr[i])) {
                    return i;
                }
            }
            return -1;
        }
        alert(searchIndex(4, str));  
        

        DEMO

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-09-18
          • 2012-05-02
          • 2011-05-29
          • 1970-01-01
          • 2019-09-22
          • 1970-01-01
          相关资源
          最近更新 更多