我正在从事“非常空白”的纸牌游戏,(非常)类似于“反人类纸牌”。在某些情况下,我想用多个空格更新一个文本字符串(例如,“我的______是______。”),但是我很难用不同的字符串替换这些相同的空白字段。假设我想将字符串转换为“我的猫是白色”。我怎么可能做到这一点?我可以用相同的文本替换字符串中的每个空格,但似乎无法在它们之间切换。我想我可以在每次空格结束时将字符串切成碎片,用我想要的文本替换所有片段,然后将字符串连接在一起……但是有没有更简单的方法?
谢谢!
答案 0 :(得分:0)
您可以在内部尝试在输入字符串中使用占位符。也就是说,请考虑使用以下表示形式:
My {1} is {2}.
当要向用户显示原始版本时,只需将{1}
,{2}
等占位符替换为下划线即可。然后,当您需要填写特定的空白时,直接定位占位符。
var input = "My {1} is {2}.";
var display = input.replace(/\{\d+\}/g, "______");
console.log(display);
var result = input.replace("{1}", "cat");
result = result.replace("{2}", "white");
console.log(result);
答案 1 :(得分:0)
另一种选择是使用不带全局标志_{1,6}
的此正则表达式g
。
函数String.prototype.replace(regexpWithNoG, string)
的调用将仅替换第一个匹配项。
let str = "My ______ is ______.";
words = ["cat", "white"];
words.forEach(w => str = str.replace(/_{1,6}/, w));
console.log(str);
.as-console-wrapper { max-height: 100% !important; top: 0; }
答案 2 :(得分:0)
这是获得该结果的功能。
function replace(str,values){
var parts=str.split(/[_]+/g)
var result = []
result.push(parts[0])
for (var i=1; i<parts.length; i++){
result.push(values[i-1])
result.push(parts[i])
}
return result.join("")
}
示例:
alert(replace("asdad ___ asdasd ___ aaa",[1,2]))
返回:
"asdad 1 asdasd 2 aaa"