Как сопоставить подстроки, распознав первые четыре буквы в Javascript?

#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. Я не думаю, что это решит вашу проблему, но это должно дать вам новые инструменты, которые помогут решить ее самостоятельно.