Как я могу проверить и отобразить слово между двумя другими конкретными словами? - PullRequest
1 голос
/ 07 апреля 2019

Пользователь введет строковое значение, которое будет содержать два слова «хлеб». Моя программа распечатает строку, которая находится между первым и последним появлением «хлеба» в данной строке, или напечатает «Нет сэндвича!», Если нет двух кусков хлеба. Например, для ввода «breadlolbread» должно быть «lol».

String a = "There is no sandwich!";

for (int i =0;i<len-3;i++) {
    if ((s.charAt(i)== 'b')&&(s.charAt(i+1)== 'r')&&(s.charAt(i+2)== 'e')&&(s.charAt(i+3)== 'a')&&(s.charAt(i+4)== 'd')) {

    }   
}

Ответы [ 2 ]

0 голосов
/ 07 апреля 2019

Вы можете сделать что-то вроде:

  public static void main(String[] args) {
        String text = "There are two bread which are very cool bread.";
        String bread = "bread";
        //make a new string by taking everything from first index of bread string+length of a bread string word and the last index of bread.
        String inBEtween = text.substring(text.indexOf(bread)+bread.length(), text.lastIndexOf(bread));
        //if the length inbetween trimmed of leading and tailing whitespace is greater than 0, print inBetween, otherwise print "No sandwich".
        if (inBEtween.trim().length() > 0) {
            System.out.println(inBEtween);
        } else {
            System.out.println("No sandwich.");
        }
    }

Конечно, вы можете сделать это и с помощью регулярных выражений

 public static void main(String[] args) {
        String text = "There are two bread bread.";
        String pattern = "(?<=bread)(.*)(?=bread)";
        Pattern r = Pattern.compile(pattern);
        Matcher m = r.matcher(text);
        if (m.find()) {
            System.out.println(m.group());
        } else {
            System.out.println("No sandwich");
        }
  }
0 голосов
/ 07 апреля 2019

Вы можете сделать это двумя различными способами. Во-первых, необходимо создать регулярное выражение, которое будет соответствовать целому предложению, то есть двум словам, предоставленным пользователем, со словом между ними.

Другой способ, вероятно, проще: вы можете использовать метод split(), чтобы разбить строку на отдельные слова, а затем просто выполнить итерацию по всему массиву, чтобы найти слова, которые вы ищете. Пример будет:

String userWord = "bread";
String word = "There are bread various bread breeds of dogs";
String[] wordSplit = word.split("");
for(int i = 0; i < wordSplit.length-2; i++) {
    if(wordSplit[i].equals(userWord) && wordSplit[i+2].equals(userWord)) {
        System.out.println(wordSplit[i+1]);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...