import java.util.StringTokenizer;
public class ReverseWords {
public static void main(String[] args) {
StringBuilder output = new StringBuilder();
String str = "This is String , split by StringTokenizer, created by mkyong";
StringTokenizer st = new StringTokenizer(str);
char space =' ';
System.out.println("---- Split by space ------");
while (st.hasMoreElements()) {
//System.out.println(st.nextElement());
output.insert(0,st.nextElement());
output.append(" ");
}
System.out.println(output.toString());
/*System.out.println("---- Split by comma ',' ------");
StringTokenizer st2 = new StringTokenizer(str, ",");
while (st2.hasMoreElements()) {
System.out.println(st2.nextElement());
}*/
}
}
我试图反转一个字符串的单词,这就是我得到的结果:
mkyongbycreatedStringTokenizer,bysplit,StringisThis
答案 0 :(得分:7)
您正在将部件插入前部,但最后插入所有空间。
你可以做这样的事情来解决这个问题:
String s = st.nextElement();
output.insert(0, s);
output.insert(s.length(), " ");
请注意,这是非常低效的,因为所有累积的内容都会一直向后移动。
您需要使用字符串标记器吗?否则,你可以写
String[] parts = str.split(" ");
StringBuilder sb = new StringBuilder();
for (int i = parts.length - 1; i >= 0; i--) {
sb.append(parts[i]);
sb.append(' ');
}
答案 1 :(得分:0)
另一个解决方案:改变这个:
output.insert(0,st.nextElement());
output.append(" ");
到此:
output.insert(0,st.nextElement() + " ");
这使得空格字符成为您在前面插入的字符串的一部分;原始代码在末尾附加了空格,使其与nextElement()
返回的字符串分开。