1
return nameString.substring(nameString.indexOf(" ", 0), nameString.lastIndexOf(" ", 0));

为什么总是返回错误?我只想将字符串从第一个出现的空格字符返回到字符串中最后出现的空格?

4

2 回答 2

4

最后一个索引

public int lastIndexOf(String str,
                       int fromIndex)

返回此字符串中最后一次出现指定子字符串的索引,从指定索引开始向后搜索...如果不存在这样的值,则返回 -1。

去掉, 0indexOf 和 lastIndexOf 的参数。当您将 0 的 fromIndex 传递给 lastIndexOf 时,它会从字符串的开头向后搜索以找到匹配项。当它找不到一个时,它返回 -1,这是子字符串的无效参数。

return nameString.substring(nameString.indexOf(" "), nameString.lastIndexOf(" "));
于 2011-10-12T03:10:42.180 回答
1

让我们把你的问题分成几部分

String nameString = "Your name is Matt";

indexOf : 从左到右开始读取并在找到第一个匹配的字符时停止,并返回字符的位置

 nameString.indexOf("M", 0) /* returns 13 */
 nameString.indexOf(" ", 0) /* returns 4 (it's placed at 4'th position in the given sentence) */

lastIndexOf : 它从右到左开始读取,当字符匹配时停止并返回匹配字符的位置

nameString.lastIndexOf("t", 17)  /* returns 16 */
nameString.lastIndexOf(" ", 17)  /* returns 12 */
nameString.lastIndexOf(" ", 0)  /* returns -1, 

注意:你给位置 0 是错误的,它从右到左读取,没有找到匹配的,所以返回 -1) */

于 2011-10-12T04:41:48.883 回答