我在程序中使用String Tokenizer来分隔字符串。 我试图使用的分隔符是“);”。但我发现StringTokenizer使用了)和;作为2个不同的分隔符。 但是我希望将它合并使用。 我该怎么办?
我的代码:
StringTokenizer st = new StringTokenizer(str,");");
String temp[] = new String[st.countTokens()];
while(st.hasMoreTokens()) {
temp[i]=st.nextToken();
i++;
}
由于
答案 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++;
}
}
}