获取无法识别的字符串的第二个单词

时间:2019-08-04 03:17:09

标签: java

我有以下代码:

String myString = "Hello world";

firstWord = myString.substring(0, myString.indexOf(" "));
secondWord= myString.substring(1, myString.indexOf(" "));

第一个单词已被识别,但第二个单词实际上在切割一个字符。所以:

first: Hello

Second: ello

我如何获得第二个单词?

谢谢

3 个答案:

答案 0 :(得分:3)

如果您确定完全有2个单词,则可以执行以下操作:

String myString = "Hello World";
int indexOfFirstSpace = myString.indexOf(" ");
String firstWord = myString.substring(0, indexOfFirstSpace);
String secondWord = myString.substring(indexOfFirstSpace + 1);

第二个单词是从索引到空格索引一直到字符串末尾的子字符串。

如果不确定有多少个单词,不妨使用split来分割字符串:

String[] words = myString.split(" ");
if (words.length >= 2) {
    String firstWord = words[0];
    String seconfWord = words[1];
}

答案 1 :(得分:1)

    String myString = "Hello world";
    index(" ") will always give you the index of first occurrence of " ". So in
    String firstWord = myString.substring(0, myString.indexOf(" "));
    you start with character at 0th index and end index will be first occurrence " " which is not included.
    Hello

    Now in your second 
    String secondWord= myString.substring(1, myString.last indexOf(" "));
    you are going to start with second character.
    ello

    **If you want to get words based in space as a separator the right way is to use split**

    **Example**
    String[] words = myString.split("\\s+");
    firstWord = words[0];
    secondWord = words[1];

答案 2 :(得分:0)

secondWord= myString.substring(1, myString.indexOf(" "));

您的代码为何不起作用: 对于上面的代码行,您从字符串的“ 1”索引处开始。索引一从“ e”开始,因为您从0开始计数。因此,当您从“ e”开始并在下一个空格“”处停止时,那将行不通,因为它只会在“ e”之间抛出单词“和”。最终是ello (注意。它不包含空格)

要解决此问题,请执行以下操作: secondWord= myString.substring(myString.indexOf(" "), 11);secondWord= myString.substring(6, 11);

请注意,结束索引(例如,在本例中为myString.substring(6, 11)中的结束索引)是当前计算机索引的一个加号(+)。在这种情况下,字母“ d”被索引为10,但是您总是在结尾索引中添加一个。