我有一个字符串“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)的总和。
你能再帮我一次吗?
答案 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);
});
}
});