Javascript 使用拆分和联接的替换代码只适用于单个单词输入,而不适用于整个单词
我有一个代码来替换输入字符串,并用其他单词替换特定单词。当我在输入中输入一个特定的单词时,这就起作用了 例如: “棕色”替换为“土色” 但如果我加上: “一只敏捷的棕色狐狸跳过一只懒狗”并添加“一只敏捷的棕色狐狸跳过一个古怪的好男孩”,它不起作用,并在输出字段中显示输入,而不是指定的输出 这是我的密码: HTML:Javascript 使用拆分和联接的替换代码只适用于单个单词输入,而不适用于整个单词,javascript,html,Javascript,Html,我有一个代码来替换输入字符串,并用其他单词替换特定单词。当我在输入中输入一个特定的单词时,这就起作用了 例如: “棕色”替换为“土色” 但如果我加上: “一只敏捷的棕色狐狸跳过一只懒狗”并添加“一只敏捷的棕色狐狸跳过一个古怪的好男孩”,它不起作用,并在输出字段中显示输入,而不是指定的输出 这是我的密码: HTML: <input id="input_1" type="text" value="" oninput="fun
<input id="input_1" type="text" value="" oninput="funcinput1()">
<button id="button_1 ml-auto copy-btn btn_cpy">translate</button>
<textarea id="output_1"></textarea>
function funcinput1()
{
let translator = {
"a quick brown fox jumps over a lazy dog": "a quick bwown fox jumps ovew a wazy good boy",
"BROWN": "soil colored",
"quick": "fast",
"the": "dee",
"n":"\ud83d\udc68\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c\udffd"
};
var input = document.querySelector("#input_1");
var output = document.querySelector("#output_1");
input.addEventListener("input", () => {
let words = input.value.split(' ');
let translated = words.map(word => translator[word] || word);
output.value = translated.join(' ');
})
}
我仍然是一个初学者,所以任何帮助解决这个问题将不胜感激
下面是一个堆栈片段:
函数funcinput1()
{
让翻译器={
“一只敏捷的棕色狐狸跳过一只懒狗”:“一只敏捷的棕色狐狸跳过一个古怪的好男孩”,
“棕色”:“土壤颜色”,
“快”:“快”,
“the”:“dee”,
“n”:“\ud83d\udc68\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c\udffd”
};
var input=document.querySelector(“#input_1”);
var output=document.querySelector(“#output_1”);
input.addEventListener(“输入”,()=>{
让words=input.value.split(“”);
让translated=words.map(word=>translator[word]| | word);
output.value=translated.join(“”);
})
}
翻译
当您输入完整短语时,您将其拆分并分别检查每个单词。因此,您永远不会在翻译对象中查找属性“快速棕色狐狸跳过懒狗”
,而是查找“快速”
和“快速”
和“棕色”
,等等
如果您还想查看整个内容,请在拆分之前执行以下操作:
var input = document.querySelector("#input_1");
var output = document.querySelector("#output_1");
input.addEventListener("input", () => {
let text = input.value;
let translated = translator[text]; // See if the whole thing has a translation
if (!translated) {
// It doesn't, try individual words
let words = input.value.split(" ");
translated = words.map(word => translator[word] || word).join(" ");
}
output.value = translated;
});
实例:
函数funcinput1(){
让翻译器={
“一只敏捷的棕色狐狸跳过一只懒狗”:“一只敏捷的棕色狐狸跳过一个古怪的好男孩”,
“棕色”:“土壤颜色”,
“快”:“快”,
“the”:“dee”,
“n”:“\ud83d\udc68\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c\udffd”
};
var input=document.querySelector(“#input_1”);
var output=document.querySelector(“#output_1”);
input.addEventListener(“输入”,()=>{
让text=input.value;
let translated=译者[文本];
如果(!翻译){
让words=input.value.split(“”);
translated=words.map(word=>translator[word]| | word).join(“”);
}
output.value=已翻译;
});
};代码>
翻译
想想你的拆分(“”)
调用你将一个字符串拆分成一个单词。。。。如何匹配多个单词?您好,感谢您的及时回复和快速修复。您提供的代码对于复制和粘贴的文本可以很好地工作,但是,如果您手动编写整个strong,转换器将无法工作!下面是一个代码应该如何工作的示例:要么键入字符串,要么粘贴它,两者都是translated@AhmadWahid-如果我运行上面的代码段并手动键入短语,则在我键入最后一个字符时,它会在结尾处被翻译。听起来可能是你打错了?嗨,是的,我打字的时候打错了。感谢您的澄清和帮助!你真棒!