#javascript
#javascript
Вопрос:
Я хочу, чтобы код реагировал на ввод, просматривая сначала все слово.
Если код не может найти подходящую подстроку, он просматривает только первые четыре буквы, а затем сопоставляет их со словом, в котором есть те же первые четыре буквы.
Это то, что я пробовал до сих пор:
function FT() {
var str = document.getElementById("ip").value;
var res = str.split(" ");
document.getElementById("splited").innerHTML = res;
var arr = str.replace("bankcard", "finance");
var str = document.getElementById("arranged").innerHTML = arr
// This part should not exist
var arr = str.replace("bankrupt", "finance");
var str = document.getElementById("arranged").innerHTML = arr
// The part above was added only to get the right result
var arr = str.replace("cartwheel", "vehicle");
var str = document.getElementById("arranged").innerHTML = arr
// This part should not exist
var arr = str.replace("carthorse", "vehicle");
var str = document.getElementById("arranged").innerHTML = arr
// The part above was added only to get the right result
var arr = str.replace("bookmark", "books");
var str = document.getElementById("arranged").innerHTML = arr
// This part should not exist
var arr = str.replace("bookshop", "books");
var str = document.getElementById("arranged").innerHTML = arr
// The part above was added only to get the right result
}
<textarea id="ip">bankrupt carthorse bookshop </textarea>
<button onclick="FT()"> match </button>
<p id="splited"></p>
<p id="arranged"></p>
Результат для ввода: «книжный магазин обанкротившегося карторса» должен быть: книги по финансам
Потому что:
банкрот имеет те же первые 4 буквы, что и банковская карта, поэтому он сопоставляется с финансами
carthorse имеет те же первые 4 буквы, что и cartwheel, поэтому он сопоставляется с vehicle
в книжном магазине есть те же первые 4 буквы, что и в закладке, поэтому он сопоставляется с книгами
Комментарии:
1. Это замена чисел на
x
?2. нет, это просто для того, чтобы показать, что он соответствует одной и той же паре
3. Я отредактировал его, чтобы его было легче понять
4. Чтобы ответить на вопрос заголовка, вы распознаете первые четыре буквы по
str.startsWith("ABCD")
. Но я действительно не понимаю, какую проблему вы пытаетесь решить.5. » он просматривает первые четыре буквы, а затем сопоставляет их с «1» » — вы имели в виду «а затем заменяет эти четыре буквы на «1»»?
Ответ №1:
Регулярные выражения и циклы for чрезвычайно удобны для чего-то подобного. Дайте мне знать, если у вас возникнут какие-либо вопросы о том, как это работает!
<script>
var search_and_replace = {
"finance":["bankcard","bankrupt"],
"vehicle":["cartwheel","carthorse"]
};
function FT() {
var str = document.getElementById("ip").value;
var res = str.split(" ");
document.getElementById("splited").innerHTML = res;
var result = "";
for (var i = 0; i < res.length; i ) {
var check = res[i];
var add_str = ""
if(add_str != "") break;
for(var key in search_and_replace){
if(add_str != "") break;
for(var s_string in search_and_replace[key]){
if(add_str != "") break;
if(s.search(s_string)){
add_str = key;
}
}
}
result = result add_str " ";
}
document.getElementById("arranged").innerHTML = resu<
}
</script>
<textarea id="ip">ABCD123 ABCD1 ABCD12</textarea>
<button onclick="FT()"> match </button>
<p id="splited"></p>
<p id="arranged"></p>
Комментарии:
1. Спасибо за усилия, но цель состоит в том, чтобы код искал первые четыре буквы вместо того, чтобы уже знать первые 4 буквы, я просто заменил случайные слова реальными словами, чтобы было легче понять, о чем я спрашиваю.
2. Непроверенный, но идея есть.
3. Я не думаю, что это решит вашу проблему, но это должно дать вам новые инструменты, которые помогут решить ее самостоятельно.