如何获取指定char的位置?

时间:2015-08-03 06:47:26

标签: javascript arrays string search

我有一个字符串“Hello World”。我想要字符串中的字符“l”的位置。

我的代码如下:

str = "Hello World";
pos = str.search(/l/g);
out.value = pos;

此代码的结果为2,但想要的结果是2,3,9。

我怎样才能得到这个结果?

编辑:感谢您的帮助。

但现在我想得到(2 + 1 * 105)+(3 + 1 * 105)+(9 + 1 * 105)的总和。

你能再帮我一次吗?

7 个答案:

答案 0 :(得分:3)

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/exec

  

寻找连续的比赛

     

如果正则表达式使用“g”标志,则可以使用exec()   方法多次在同一个字符串中查找连续匹配。   执行此操作时,搜索从指定的str的子字符串开始   正则表达式的lastIndex属性(test()也将提前   lastIndex属性)。

var str = "Hello World";
var re = /l/g;
var matches = [];

while(match=re.exec(str)) matches.push(match.index);

document.write(matches);

答案 1 :(得分:1)

做一个小功能怎么样?

str = "Hello World";
find = (function(str,c){
    results = []  
    for(i=0;i<str.length;i++){
       if (str[i].toLowerCase()===c)
           results.push(i)
    }
    return results
});
find(str,'l')

这里是工作小提琴:http://jsfiddle.net/bx8sj0gv/

答案 2 :(得分:0)

这个位置是两个,因为这里没有循环,所以你的搜索只会打一次,这只会显示&#34; 2&#34;在这种情况下。

你将需要创建和数组的字符并循环遍历它:

    input_1 = [ "hello", "world" ];

    for(var i=0; i<input_1.length; i++){
       pos = str.search(/l/g);
       out.value = pos;
    }

这仅仅是一个例子,但它将帮助您理解这一切的概念。

答案 3 :(得分:0)

试试这个:

var str="Hello World";
var needle='l';
var temp=[];
for(var i=0; i < str.lengt
    if(str[i]===haystack){
        temp.push(i)
    }
}
console.log(temp);

答案 4 :(得分:0)

您的代码只找到该字母的第一个实例,然后返回。您需要列出字符串的每个字符,如下所示:

  

str =“Hello World”

     

for(var i = 0,len = str.length; i&lt; len; i ++){if(str [i] ==“l”)   {console.log(i);   }   }

答案 5 :(得分:0)

以下是完成此操作的链接 Finding all indexes of a specified character within a string

var str = "scissors";
var indices = [];
for(var i=0; i<str.length;i++) {
if (str[i] === "s") indices.push(i);
}

答案 6 :(得分:0)

while循环解决方案:

var indices = function(find, where) {
  var i = where.lastIndexOf(find);
  if (-1 === i) return [];
  return indices(find, where.substr(0, i)).concat([i]);
};

alert(indices("l", "Hello World")); // [2, 3, 9]

递归解决方案:

    $(function(){
     var flag = false;
     $("input[type=text]").blur(function () {
            //some code
            flag = true;
        });
     $("input[type=password]").blur(function () {
           //some code
           flag = true;
        });

        if(flag!= true)
           $('body').click(function(event){
            alert(event.target.tagName);
           });
        }
      });