我有一个由LHS,运算符,RHS组成的复杂表达式。在表达式中,我需要放置一个输入框来代替每个RHS并将值附加到其中。
所以,我想到找到表达式中所有运算符的位置,并在其旁边放置一个输入框。 她是一个例子:
我有一个字符串var a = "(temp >= 10) && (humid >= 20) "
,其中,我需要在字符串表达式中找到>=
的每个位置(索引)。
我尝试比较单个字符,但这对我没有帮助。如何使用Javascript或Jquery进行此操作?
答案 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是第一次出现的索引)将得到第二个索引。