【发布时间】:2013-07-11 08:42:32
【问题描述】:
我正在转换现有应用程序的代码以针对 Java 1.1 编译器进行编译,以用于定制硬件。这意味着我不能使用 String.split(regex) 将我现有的字符串转换为数组。
我创建了一个方法,它应该给出与String.split(regex) 相同的结果,但它有问题,我不知道是什么。
代码:
private static String[] split(String delim, String line) {
StringTokenizer tokens = new StringTokenizer(line, delim, true);
String previous = "";
Vector v = new Vector();
while(tokens.hasMoreTokens()) {
String token = tokens.nextToken();
if(!",".equals(token)) {
v.add(token);
} else if(",".equals(previous)) {
v.add("");
} else {
previous = token;
}
}
return (String[]) v.toArray(new String[v.size()]);
}
示例输入:
RM^RES,0013A2004081937F,,9060,1234FF
示例输出:
String line = "RM^RES,0013A2004081937F,,9060,1234FF";
String[] items = split(",", line);
for(String s : items) {
System.out.println(" [ " + s + " ] ");
}
[RM^RES][0013A2004081937F][][][9060][][1234FF]
期望的输出:
[RM^RES][0013A2004081937F][][9060][1234FF]
我正在尝试转换的旧代码:
String line = "RM^RES,0013A2004081937F,,9060,1234FF";
String[] items = line.split(",");
for(String s : items) {
System.out.println(" [ " + s + " ] ");
}
[RM^RES][0013A2004081937F][][9060][1234FF]
【问题讨论】:
-
如果您打算使用其他分隔符,您可能希望在拆分方法中将
",".equals(...)替换为delim.equals(...)。 -
@haraldK 谢谢,这句话很好地解决了这个问题:)
标签: java stringtokenizer