Java中的字符串标记生成器

时间:2011-08-12 06:23:43

标签: java string

我在程序中使用String Tokenizer来分隔字符串。 我试图使用的分隔符是“);”。但我发现StringTokenizer使用了)和;作为2个不同的分隔符。 但是我希望将它合并使用。 我该怎么办?

我的代码:

StringTokenizer st = new StringTokenizer(str,");");
String temp[] = new String[st.countTokens()];
while(st.hasMoreTokens()) { 
    temp[i]=st.nextToken();
    i++;
}

由于

6 个答案:

答案 0 :(得分:2)

作为String#split的替代方法(不推荐使用StringTokenizer),如果你喜欢Commons Lang,那就有StringUtils#splitByWholeSeparator(null-safe,不需要乱用正则表达式):

 String temp[] = splitByWholeSeparator(str, ");" );

答案 1 :(得分:2)

正如许多答案所暗示的那样,String.split()将解决您的问题。要逃避您尝试进行标记化的特定序列,您必须像这样在序列中转义')':

str.split("\\);");

答案 2 :(得分:0)

这有什么不对吗?

String temp[] = str.split("\\);");

答案 3 :(得分:0)

您应该尝试使用String类中的split(String regex)方法。 它应该工作得很好,我猜它会返回一个字符串数组(就像你似乎更喜欢)。 您始终可以使用Arrays.asList()方法强制转换为List。

干杯, Tiberiu

答案 4 :(得分:0)

“StringTokenizer是一个遗留类,出于兼容性原因而保留,但在新代码中不鼓励使用。建议任何寻求此功能的人都使用String的split方法或java.util.regex包。”< / p>

这就是Sun的医生所说的。

String[] result = "this is a test".split("\\s");

是推荐的标记String的方法。

答案 5 :(得分:0)

这对你有用。

import java.util.StringTokenizer;


public class StringTest {

/**
 * @param args
 */
public static void main(String[] args) {
    int i = 0;
    String str = "one);two);three);four";
    StringTokenizer st = new StringTokenizer(str, ");");
    String temp[] = new String[st.countTokens()];

    while (st.hasMoreTokens()) {

        temp[i] = st.nextToken();
        System.out.println(temp[i]);
        i++;
    }



}

}