输入:我叫鲍勃。
输出:鲍勃是我的名字。
我看过很多关于如何颠倒句子中每个单词和单词顺序的例子。然而,我不认为我看到了一个我想要的例子上面。这个论坛没有什么帮助,因为它只关注句子开头和结尾的双引号:如何颠倒字符串中的单词,但保持标点符号在正确的位置?
我试过的
public void rev2(String str) {
String[] arrStr = str.split(" ");
for (int i = arrStr.length - 1; i >= 0; i--) {
if (!arrStr[i].contains(".")) {
System.out.print(arrStr[i] + " ");
}
}
}
public static void main(String[] args) {
Test t = new Test();
t.rev2("My name is Bob.");
}
上面的代码没有按预期工作。我可能可以将每个字符串转换为char并使用character.isalphabet()或者可以使用pattern?
我需要一些想法。提前感谢您的时间和帮助。
3条答案
按热度按时间pcww981p1#
如果您只想将句点放在句末,则可以根据单词是否为第一个单词,将单词后跟空格或句点打印出来,也可以通过调用将句点从最后一个单词中删除
substring()
. 像这样:输出:鲍勃是我的名字。
0mkxixxg2#
以下是一个在问题约束范围内工作的解决方案(其中一些是假设的):
说明:
布尔点向前看,看下一个元素是否包含“.”。如果是这样的话,我们就在一个句子的边界上加了一个。在当前单词之后。如果没有,我们就放一个空间。如果我们在数组的最后一个元素上,我们还会添加一个“.”。
输出:
happy am I. Bob is name My.
5uzkadbs3#
如果希望代码不那么冗长: