簡體   English   中英

Javascript-搜索和替換特定單詞

[英]Javascript - search and replace specific words

我想創建一個文本框,用戶可用來搜索與英語單詞對應的西班牙語。 但是,他們不僅要輸入單詞,還必須輸入整個問題。

示例:用戶輸入:“您怎么說西班牙語的人?” 預期輸出:“您說Hombre。”

我正在使用switch語句,因為用戶還會詢問其他問題。 如何在開關盒中使用regex來搜索用戶想知道的含義的單詞,並將其替換為西班牙語等效項?

我知道如何使用正則表達式將句子的第五個單詞(在上述情況下為“ 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處鍵入的單詞,並在答案中使用該單詞的西班牙語等效項,這意味着我還需要一種方法來告訴男人=男性,女人= mujer,kid =niño...

我對如何實現這一目標感到迷茫。 有什么幫助嗎?

由於它是一個翻譯最少的小項目,我建議您將單詞保留在一個對象中。 您可以將英語單詞作為鍵,將西班牙語單詞作為鍵。 要獲得第五個單詞,您可以在一個空格上拆分並獲得返回數組的第五個元素。

在下面的示例中,當對象沒有第五個單詞的鍵時,您還需要添加一些錯誤處理來處理

這是一個例子:

 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> 

如果您希望每次都用完全相同的措詞來表達您的句子,可以使用表達式/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個單詞。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM