我想创建一个文本框,用户可用来搜索与英语单词对应的西班牙语。但是,他们不仅要输入单词,还必须输入整个问题。
示例: 用户输入:“您怎么说西班牙语的人?”预期输出:“您说Hombre。”
我正在使用switch语句,因为用户还会询问其他问题。如何在开关盒中使用正则表达式来搜索用户想知道的含义的单词,并将其替换为与西班牙语等效的单词?
我知道如何使用正则表达式将句子的第五个单词(在上述情况下为“ man”)替换为“ hombre”。但是,由于用户可以要求输入“ man”以外的其他单词,因此我要怎么做才能用许多西班牙语单词之一替换第5个单词,具体取决于第5个单词是什么?
我希望我足够清楚让您理解。
这就是我所拥有的:
function myFunction() {
var text;
var words = document.getElementById("myInput").value.toLowerCase();
switch(words) {
case "hello":
text = "Hello, my friend.";
break;
case "how do you say xxx in spanish?":
text = "You say yyy.";
break;
default:
text = "I don't know what you mean...";
}
document.getElementById("answer").innerHTML = text;
}
function translate() {
var str = document.getElementById("answer").innerHTML;
var txt = str.replace("yyy","*spanish word*");
document.getElementById("answer").innerHTML = txt;
}
<p>Ask for the Spanish equivalent of an English word.</p>
<input id="myInput" type="text" size="50">
<button onclick="myFunction();translate()">Ask</button>
<p id="answer"></p>
我希望能够检测到用户在xxx处键入的单词,并在答案中使用该单词的西班牙语等效项,这意味着我还需要一种方法来告知man = hombre ,女人= mujer,孩子=niño...
我对如何实现这一目标感到迷茫。有帮助吗?
答案 0 :(得分:1)
由于它是一个翻译最少的小项目,我建议您将单词保留在一个对象中。您可以将英语单词作为键,将西班牙语单词作为键。要获得第五个单词,您可以在空格上分割并获得返回数组的第五个元素。
在下面的示例中,当对象没有第五个单词的键时,您还需要添加一些错误处理来处理
这里是一个例子:
var trans = {
"man": "hombre",
"book": "libro"
}
function translate() {
var text;
var words = document.getElementById("myInput").value;
// split returns an array with space as a delimiter
// then get the 5th element from the array (remember it starts at 0)
// then turn it to lower case
var fifthWord = words.split(" ")[4].toLowerCase();
// use the word as a key for the trans object to return the Spanish value
document.getElementById("answer").innerHTML = "You say: " + trans[fifthWord];
}
document.getElementById("ask").addEventListener("click", translate);
<p>Ask for the Spanish equivalent of an English word.</p>
<input id="myInput" type="text" size="50" value="How do you say Man in Spanish">
<button id="ask">Ask</button>
<p id="answer"></p>
答案 1 :(得分:1)
如果您希望每次都用完全相同的措词来表达句子,则可以使用表达式/how do you say \w+ in spanish\?/i
来匹配输入,使用表达式/say (\w+)/i
来捕获要翻译的单词。
function myFunction() {
var text;
var words = document.getElementById("myInput").value.toLowerCase();
if (words === "hello") {
text = "Hello, my friend.";
} else if (words.match(/how do you say \w+ in spanish\?/i)) {
// matched word is the second element
var word = words.match(/say (\w+)/i)[1];
// find the translation in the object
var translation = lookup[word];
text = "You say " + translation + ".";
} else {
text = "I don't know what you mean...";
}
document.getElementById("answer").innerHTML = text;
}
var lookup = {
hello: "hola",
goodbye: "adios"
}
<p>Ask for the Spanish equivalent of an English word.</p>
<input id="myInput" type="text" size="50">
<button onclick="myFunction()">Ask</button>
<p id="answer"></p>
要翻译该单词,您可以建立一个映射到西班牙语单词的英语单词对象,因为您说总共只有20个单词。