Превратите текст в массив строк, найдите строку, отправленную во второй позиции, и замените ее строкой в ​​​​третьей позиции

Я полностью застрял на том, куда идти с этой проблемой. Я пытаюсь взять слово из строки слов и заменить его словом из другой строки. Например, один из примеров, который мне подсказали, был:

//changeWords("Hi nice to meet you", "hi", "hello") returns ["hello", "nice", "to", "meet", "you"]

Вот что я пока напечатал:

public static String[] changeWords(String text, String find, String replace)
  {
     String[] words = new String[0];
     words = text.split(" ");
     if (words[0] == find) {
       words[0].set(replace);
     }
    return words;
  }

По общему признанию, мой код не слишком подробен и не далек от поиска решения, но я хотел бы получить некоторое руководство о том, куда двигаться из того, что у меня есть. Спасибо за помощь.

Вместо того, чтобы проверять слово в 0-й позиции, выполните цикл по массиву строк и сравните каждое слово. Как только совпадение найдено, замените слово с помощью words[i] = replace и прервите цикл.

D George 09.12.2020 23:43

Вы ДОЛЖНЫ сравнивать объекты в Java, используя .equals(), а не ==.

RobOhRob 09.12.2020 23:45
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
2
277
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Как сказал @D George, вам нужно выполнить цикл с помощью цикла и использовать метод .equals() для сравнения строк. Вы можете изменить свой код, чтобы он выглядел так... или используйте метод .replaceFirst() строкового объекта, чтобы заменить первое вхождение строки поиска. Попробуй это

public static String[] changeWords(String text, String find, String replace)
  {
     String[] words = new String[0];
     words = text.split(" ");
     for(int i = 0; i < words.length; i++){
       if (words[i].equalsIgnoreCase(find)) {
         words[i]=replace;
         break;
       }
     }
    return words;
  }

ИЛИ ЭТО

public static String[] changeWords(String text, String find, String replace)
{
   return text.replaceFirst(find, replace);
}

Описанный выше подход хорошо подходит в ситуации, когда вы хотите заменить только первое вхождение строки поиска. если вы хотите заменить все вхождения строки поиска, вам не нужно использовать массив, поскольку строковый объект поставляется с методом замены. вы можете сделать это, чтобы заменить все вхождения:

public static String[] changeWords(String text, String find, String replace)
  {
    return text.replace(find, replace);
  }

Вы на правильном пути, но теперь моя программа заменяет только первый экземпляр каждого слова и, как указал Арвинд Кумар Авинаш, не учитывает примеры без учета регистра. Пример, который я разместил, в настоящее время возвращает «Привет, приятно познакомиться». Помощник, с которым я консультируюсь, сказал мне, что размер слов в массиве является частью проблемы.

Kaito Meagher 10.12.2020 04:16

вы можете использовать метод .equalsIgnoreCase(), чтобы найти совпадение без учета регистра.

Joseph Ofem 10.12.2020 09:25

Большое спасибо. Я немного посоветовался с другим студентом, чтобы помочь закончить код, но то, что вы предложили, очень помогло в его решении!

Kaito Meagher 11.12.2020 03:55

Другие вопросы по теме