我有一个字符串:
my_str = "select * from users where id = ? and name = ?;"
我还有一个数组来替换'?'
var arr = [1,'test']
我想先替换?有1和第二?在'测试'中 jQuery / JavaScript动态。可以有一些?在字符串中。
注意这个问题与MySQL无关,我写的查询只是一个字符串。
答案 0 :(得分:2)
对于更动态的选项,其中replace
是一个按顺序包含替换项的数组:
const string = 'select * from users where id = ? and name = ?;'
const replace = [1, 'test']
let index = 0
const output = string.replace(/\?/g, () => replace[index++])
console.log(output)

答案 1 :(得分:1)
多次使用替换方法进行替换。
var my_str = "select * from users where id = ? and name = ?;"
my_str = my_str.replace("?","1"); //replaces first "?"
my_str = my_str.replace("?","test"); //replaces second "?"
alert(my_str);

答案 2 :(得分:1)
使用replace
功能,您可以执行此操作,只需多次使用replace
来替换“'?'”。
var my_str = "select * from users where id = ? and name = ?;"
var arr = [1,'test']
my_str = my_str.replace("?",arr[0]).replace("?",arr[1]);
console.log(my_str);

答案 3 :(得分:0)
多次使用replace()
var r = "select * from users where id = ? and name = ?;".replace("?", '1').replace('?','test');
console.log(r);
如果您有一组值来替换'?':
var arr = [1,'test']
var r = "select * from users where id = ? and name = ?;"
for(i=0; i<arr.length; i++){
r = r.replace('?',arr[i]);
}
console.log(r);
答案 4 :(得分:0)
获取?
的索引并放入数组,然后编写要替换的函数。
var str = "select * from users where id = ? and name = ?;"
var indices = [];
for(var i=0; i<str.length;i++) {
if (str[i] === "?") indices.push(i);
}
str = replaceAt(str,0,"1");
str = replaceAt(str,1,"Jonh");
alert(str);
function replaceAt(str, index, replacement) {
return str.substr(0, indices[index]) + replacement+ str.substr(indices[index] + 1, str.length);
}