您的位置:首页 > 其它

reverse a given string StringTokenizer

2004-11-29 18:08 357 查看


时间: 2004-9-08 23:16:27 标题:




to 凤舞凰扬:
没有夸张,如果用你的办法,逗号之类的间隔符号虽然被去掉了,却没有象庄表伟要求的那样被打印出来;

to sankxuan:
用了StringTokenizer(a,SEPARATORS,true)的三参数的构造函数,漂亮,确实是最好的实现。

------------------------------------------------------
重构了一下,下面是重构后的代码和执行结果:

java代码:
import java.util.StringTokenizer;

public class Test{

public static final String SEPARATORS = " ,/t:'';?!";

public static String reverse(String input){

StringTokenizer st = new StringTokenizer(input, SEPARATORS, true);
StringBuffer words = new StringBuffer("");
while (st.hasMoreTokens()) {
words.insert( 0, st.nextToken() );
}
return words.toString();
}

public void testReverse(){

String[] sentences = new String[]{
"Hello, world!",
"I am a student",
"Am I a student? yes, or no",
"Am I a student ? yes , or no",
"Zhuang says:'It's just a coding game.'"
};

for (int i = 0; i < sentences.length; i++)
System.out.println("Sentence[" + i + "]=[" + sentences[i]+"], " +
"After reversed: [" + Test.reverse(sentences[i])+"]");

}

public static void main(String[] args){
new Test().testReverse();
}

}

--------------------------------------------------------------------------

执行结果:

引用:
>ant exec

Buildfile: build.xml

exec:
[java] Sentence[0]=[Hello, world!], After reversed: [!world ,Hello]
[java] Sentence[1]=[I am a student], After reversed: [student a am I]
[java] Sentence[2]=[Am I a student? yes, or no], After reversed: [no or ,yes ?student a I Am]
[java] Sentence[3]=[Am I a student ? yes , or no], After reversed: [no or , yes ? student a I Am]
[java] Sentence[4]=[Zhuang says:'It's just a coding game.'], After reversed: ['game. coding a just s'It':says Zhuang]




学习了一下,决定下次遇到这样回答

java代码:
import java.util.StringTokenizer;

public final class StringReverser {

public final static String DEFAULT_DELI = " ,/t:'';?!";
public final static boolean DEFAULT_INCLUDE_DELT = true;
private StringTokenizer tokenizer = null;

public StringReverser(String source) {
this(source,DEFAULT_DELI,DEFAULT_INCLUDE_DELT);
}
public StringReverser(String source,String delimiters) {
this(source,delimiters,DEFAULT_INCLUDE_DELT);
}
public StringReverser(String source,String delimiters,boolean includeDelimiter) {
tokenizer = new StringTokenizer(source,delimiters,includeDelimiter);
}

public String reverse() {
StringBuffer result = new StringBuffer();
while(tokenizer.hasMoreTokens() ) {
result.insert(0,tokenizer.nextToken() );
}
return result.toString();
}
}
java代码:
StringReverser reverser = new StringReverser("this is a test String");
String reversString = reverser.reverse();


时间: 2004-9-13 13:59:35 标题:




呵呵,只是各人编程序风格不同,思路其实都差不多。
换了我,会把 tokenizer 挪到 reverse()里面去,因为 tokenizer只有在 reverse()里才被用到,封在method里它的作用域比封装在class中就更小了。
// -----------------------------------------------------------------------------
// StringReverseWord.java
// -----------------------------------------------------------------------------

import java.util.*;

/**
* -----------------------------------------------------------------------------
* Used to provide an example of how to reverse all words in a given string.
* -----------------------------------------------------------------------------
*/

public class StringReverseWord {

private static void doStringReverseWord() {

String a = "Alex Michael Hunter";
Stack  stack = new Stack();
StringTokenizer tempStringTokenizer = new StringTokenizer(a);

while (tempStringTokenizer.hasMoreTokens()) {
stack.push(tempStringTokenizer.nextElement());
}

System.out.println("/nOriginal string: " + a);

System.out.print("Reverse word string: ");
while(!stack.empty()) {
System.out.print(stack.pop());
System.out.print(" ");
}

System.out.println("/n");
}

/**
* Sole entry point to the class and application.
* @param args Array of String arguments.
*/
public static void main(String[] args) {
doStringReverseWord();
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: