如何在javascript中获取字符串中指定单词的每个索引?

时间:2017-12-16 09:46:51

标签: javascript jquery

我有一个由LHS,运算符,RHS组成的复杂表达式。在表达式中,我需要放置一个输入框来代替每个RHS并将值附加到其中。

所以,我想到找到表达式中所有运算符的位置,并在其旁边放置一个输入框。 她是一个例子:

我有一个字符串var a = "(temp >= 10) && (humid >= 20) ",其中,我需要在字符串表达式中找到>=的每个位置(索引)。

我尝试比较单个字符,但这对我没有帮助。如何使用Javascript或Jquery进行此操作?

5 个答案:

答案 0 :(得分:3)

获取子字符串的单个索引,因此您必须使用着名的indexOf方法。

获取所有指数你可以使用这个技巧

var indices = [];
var str = 'var expression = "(temp >= 10) && (humid >= 20)"'

// using a regex with the global flag
str.replace(/>=/g, function(q, index) {
  indices.push(index)
  return q;
})

答案 1 :(得分:1)

尝试以下方法:

var expression = "(temp >= 10) && (humid >= 20)";
expression = expression.split('');
expression.forEach(function(item, i){
  if(item === '>'){
    console.log('position of >: ' + i)
  }
  else if(item === '='){
    console.log('position of =: ' + i)
  }
});

答案 2 :(得分:1)

您需要的是在字符串中进行全局搜索的正则表达式。与var regex = />=/gi一样,检查已经存在的答案here

答案 3 :(得分:1)

您可以使用indexOf然后使用循环来检查返回值。

来自文档

  

indexOf()方法返回给定元素的第一个索引   可以在数组中找到,如果不存在,则返回-1。



var a = 'var a = "(temp >= 10) && (humid >= 20) "';
var positions = [];
var position = -1;
while ((position = a.indexOf(">=", position + 1)) !== -1) {
    positions.push(position);
}
console.log(positions);




答案 4 :(得分:0)

您可以参考indexOf

indexOf将返回匹配为true的第一个索引, 尝试:

console.log(expression.indexOf('>='));

这将打印第一个'>='出现的索引。 indexOf可以使用第二个参数来指定搜索的起始索引,expression.indexOf('>=', 7);(其中7是第一次出现的索引)将得到第二个索引。