我有一个字符串,其中单词由一个或三个空格分隔。 我正在尝试打印每3个空格分隔的单词集。 我得到的第一组单词达到3个空格并进入无限循环:
String sentence = "one one one three three one three one";
int lenght=0;
int start=0;
int threeSpaces = sentence.indexOf(" ");//get index where 1st 3 spaces occur
while (lenght<sentence.length()) {
String word = sentence.substring(start, threeSpaces);//get set of words separated by 3 spaces
System.out.println(word);
start=threeSpaces;//move starting pos
length=threeSpaces;//increase length
threeSpaces= sentence.indexOf(" ", start);//find the next set of 3 spaces from the last at index threeSpaces
}//end while
}
}
输出:一一
此时start = 11,length = 11,threeSpaces = 11! threespaces就是问题所在,我期待这个值成为新起始索引(11)中下一组3个空格的索引......任何输入值得赞赏......
PS标题到处都是不容易想到的... ...
答案 0 :(得分:3)
使用以下代码可以更简单地完成此操作:
String[] myWords = sentence.split(" ");
for (String word : myWords) {
System.out.println(word);
}
答案 1 :(得分:2)
您必须将开始索引设为start + 1
,否则您将获得sentence
中相同3个空格的索引:
threeSpaces = sentence.indexOf(" ", start + 1);
但你必须做更多的任务。您需要在实际调用" "
之前检查substring
的索引,因为当不再有" "
时,索引将为-1
,您将获得{{1}异常。为此,您可以将StringIndexOutOfBounds
循环条件更改为:
while
这将停止while (lenght<sentence.length() && threeSpaces != -1)
循环,只要3个空格的索引出现while
,就意味着,不再有3个空格。
解决此问题的更好方法是在{3}空格上-1
:
split
答案 2 :(得分:1)
I have a string where words are either seperated by one or three spaces. I am tryng to print the set of words that are seperated by every 3 spaces.
你应该使用String#split
3个空格:
String[] tokens = sentence.split(" {3}");
答案 3 :(得分:0)
谢谢大家,分裂看起来像是: 字符串短语=“一一三一一三三一一三三三一一”; String [] split2 = phrase.split(“”); for(String three:split2) 的System.out.println(3);
输出: 一一 三 一一一 三三 一一一 三三三 一一一个