【发布时间】:2017-06-04 22:05:03
【问题描述】:
我正在编写一个简单的 JS 代码,以使用数组将文本中的某些单词替换为其他单词。
<textarea id="text1">
e mi e
ke fo
e di
</textarea>
<button type="button" onclick="myFunction()">try</button>
<pre id="demo"></pre>
<script>
function myFunction() {
var str = document.getElementById("text1").value;
var mapObj = {
"k":"g",
" e": "B",
"e":"ar"
};
var re = new RegExp(Object.keys(mapObj).join("|"),"gi");
str = str.toLowerCase().replace(re, function(matched){
return mapObj[matched];
});
document.getElementById("demo").innerHTML = str;
}
</script>
结果是:
ar mi B
gar fo
ar di
但我想拥有这个:
B mi B
gar fo
B di
如果"e"s 要在" e"s 之前更改(e 之前有一个空格),那么" e"s 将不是" e" 而是“ar”,所以在数组中,我把" e" 放在"e" 上面,效果很好。
然而问题是文本可能包含一个分隔的"e" 作为整个文本的第一个单词,或者作为一行的第一个单词,之前没有空格。在这种情况下,如何将这个分隔的 "e" 替换为 "B" 并防止它被替换为 "ar"。
【问题讨论】:
-
有点困惑(也许只有我一个人),能否请您添加一个说明问题的示例?您给出的示例给出了我猜想要的输出
标签: javascript arrays string replace