我有以下代码:
String myString = "Hello world";
firstWord = myString.substring(0, myString.indexOf(" "));
secondWord= myString.substring(1, myString.indexOf(" "));
第一个单词已被识别,但第二个单词实际上在切割一个字符。所以:
first: Hello
Second: ello
我如何获得第二个单词?
谢谢
答案 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,但是您总是在结尾索引中添加一个。