确定用户输入句子中的第二个单词

时间:2013-09-23 21:24:48

标签: java

我正在尝试在句子中输入第二个单词。我确定了第一个单词,我很难找到如何获得第二个单词。这就是我尝试过的:

    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 个答案:

答案 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];

答案 1 :(得分: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);

答案 2 :(得分:0)

第一个单词定义为句子开头和第一个空格之间的文本,对吗?所以String strFirstWord = strSentence.substring(0, indexOfSpace);可以帮到你。

类似地,第二个单词被定义为第一个空格和第二个空格之间的文本。 String strSecondWord = strSentence.substring(indexOfSpace, indexOfSpace);在第一个空格和第一个空格(这是一个空字符串)之间找到文本,这不是你想要的;你想要第一个空格和第二个空间之间的文字......

答案 3 :(得分:0)

我会使用正则表达式:

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

这可以通过匹配整个输入,同时捕获第二个单词并将匹配的内容(即所有内容)替换为第1组中捕获的内容。

重要的是,正则表达式是精心设计的,所有内容都是可选的,这意味着如果没有第二个单词,则会产生空白结果。这也适用于空白输入的边缘情况。

另一个优点是它只是一行。

答案 4 :(得分: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]);