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);
4

5 回答 5

1

您将第二个单词从第一个空格带到第一个空格(它将为空)。我建议你把它带到第二个空格或最后。

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

如果你可以使用 split 你可以做

 String[] words = strSentence.split(" ");
 String word1 = words[0];
 String word2 = words[1];
于 2013-09-23T21:28:10.177 回答
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);
于 2013-09-23T21:28:54.920 回答
0

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

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

于 2013-09-23T21:28:53.217 回答
0

我会使用正则表达式:

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

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

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

另一个优点是它只是一条线。

于 2013-09-23T21:30:48.617 回答
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]);
于 2013-09-23T21:31:10.743 回答