分割字符串并获取倒数第二个单词

4

我有一个字符串"Hai,Hello,How,are,you"

我需要的是倒数第二个单词"are"

String string = "Hai,Hello,How,are,you";

String[] bits = string.split(",");
String lastWord = bits[bits.length-1]
tvs.setText(lastWord);

但是当我这样做时:
String lastWord = bits[bits.length-2];

我没有理解倒数第二个单词。


1
字符还是单词? - dryairship
1
数组从0号索引开始。你想要的单词在bits.length-2位置。 - Jeet
我这样做了...但是我没有得到... - Jocheved
我刚试过了,Jeet的回答对我很有效。 - dvaergiller
请分享您当前代码的输出结果。 - Mahendra
3个回答

7
你需要的是String lastWord = bits[bits.length-2];,因为bits[bits.length-1];会返回最后一个单词而不是倒数第二个。
这是因为数组的索引从0开始,以length-1结束。
以下是更新后的代码片段:
String string = "Hai,Hello,How,are,you";
String[] bits = string.split(",");
String lastWord = bits[bits.length - 2];
tvs.setText(lastWord);

我这样做了,但是没有得到结果。 - Jocheved
3
@Jocheved,那么你就有不同的问题了。这个答案是正确的。 - f1sh
谢谢...问题出在我这里...实际上倒数第二个字符是一个空字符,所以它没有返回任何内容...现在它已经正常工作了...谢谢。 - Jocheved
@Jocheved 不用谢! :) - user2004685

3

首先,您需要找出最后一个逗号的字符索引。然后再找到倒数第二个逗号的位置。之后,您可以找到它们之间的子字符串。

String string = "Hai,Hello,How,are,you";
        int lastIndex,secondLastIndex;
        lastIndex=string.lastIndexOf(',');
        secondLastIndex=string.lastIndexOf(',',lastIndex-1);
        System.out.println(string.substring(secondLastIndex+1,lastIndex));

尝试一下,它会起作用。


1

我不确定,但我认为是这样的。

如果你的代码如下所示,它将无法工作。

String string = "Hai,Hello,How,are,";
String[] bits = string.split(",");
 ↓
bits[]…{ "Hai","Hello","How","are" }
bits[bits.length-2]…"How"

这段代码有效。
String string = "Hai,Hello,How,are,";
String[] bits = string.split(",", -1);
 ↓
bits[]…{ "Hai","Hello","How","are","" }
bits[bits.length-2]…"are"

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接