Я преобразовываю код из существующего приложения для компиляции с помощью компилятора 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()]);
}
Пример ввода:
РМ^РЕС,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(...)
в методе разделения, если планируете использовать другой разделитель. - person Harald K   schedule 11.07.2013