2013-09-23 3 views
0

Я пытаюсь найти второе слово, введенное в предложение. У меня определено первое слово, и у меня возникли проблемы с поиском, как получить ТОЛЬКО второе слово. Это то, что я пробовал:Определите второе слово в введенном пользователем предложении

String strSentence = JOptionPane.showInputDialog(null, 
      "Enter a sentence with at" + " least 4 words", 
      "Split Sentence", JOptionPane.PLAIN_MESSAGE); 

    int indexOfSpace = strSentence.indexOf(' '); 

    String strFirstWord = strSentence.substring(0, indexOfSpace); 
/*--->*/String strSecondWord = strSentence.substring(indexOfSpace, indexOfSpace); 
    Boolean blnFirstWord = strFirstWord.toLowerCase().equals("hello"); 
    Boolean blnSecondWord = strSecondWord.toLowerCase().equals("boy"); 

    JOptionPane.showMessageDialog(null, "The sentence entered: " + strSentence 
      + "\nThe 1st word is " + strFirstWord 
      + "\nThe 2nd word is " + strSecondWord 
      + "\nIs 1st word: hello? " + blnFirstWord 
      + "\nIs 2nd word: boy? " + blnSecondWord); 
+5

Можно ли использовать 'String.split()' в своей домашней работе? –

+0

Я не понимаю, почему нет. –

ответ

1

Вы принимаете второе слово из первого пространства в первом пространстве (его будет пустым). Я предлагаю вам взять его до второго места или конца.

int indexOfSpace2 = = strSentence.indexOf(' ', indexOfSpace+1); 
String strSecondWord = strSentence.substring(indexOfSpace+1, indexOfSpace2); 

Если вы можете использовать раскол вы можете сделать

String[] words = strSentence.split(" "); 
String word1 = words[0]; 
String word2 = words[1]; 
+0

Спасибо большое! Он отлично работал. –

0

Первым слово определяются как текст между началом предложений и первым местом, не так ли? Так что String strFirstWord = strSentence.substring(0, indexOfSpace); получает это за вас.

Аналогичным образом второе слово определяется как текст между первым пространством и вторым пространством. String strSecondWord = strSentence.substring(indexOfSpace, indexOfSpace); находит текст между первым пространством и первым пространством (которое является пустой строкой), которое не то, что вы хотите; Вы хотите, чтобы текст между первым пространством и второго пространством ...

1
int indexOfSpace = strSentence.indexOf(' '); 
String strFirstWord = strSentence.substring(0, indexOfSpace); 
strSentence = strSentence.substring(indexOfSpace+1); 
indexOfSpace = strSentence.indexOf(' '); 
String strSecondWord = strSentence.substring(0, indexOfSpace); 
strSentence = strSentence.substring(indexOfSpace+1); 
indexOfSpace = strSentence.indexOf(' '); 
String strThirdWord = strSentence.substring(0, indexOfSpace); 
0

Я хотел бы использовать регулярное выражение:

String second = input.replaceAll("^\\w* *(\\w*)?.*", "$1"); 

Это работает путем сопоставления всего ввода во время записи второго слова и замены что сопоставимо (т.е. все) с тем, что было зафиксировано в группе 1.

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

Еще один плюс - это всего лишь одна строка.

0

Вы можете использовать split() метод класса String. Он разделяет строку с использованием шаблона. Например:

String strSentence = "word1 word2 word3"; 
String[] parts = strSentence.split(" "); 

System.out.println("1st: " + parts[0]); 
System.out.println("2nd: " + parts[1]); 
System.out.println("3rd: " + parts[2]); 
Смежные вопросы