package com.github.zangxiaoqiang.common.string;
public class StringIterator {
private String str;
private static final char DEFAULT_DELIM = ',';
private char delim;
private int prevPos;
private int pos;
public StringIterator(String str) {
this.str = str;
this.delim = DEFAULT_DELIM;
pos = str.indexOf(delim);
}
public StringIterator(String str, char delim) {
this.str = str;
this.delim = delim;
pos = str.indexOf(delim);
}
public int countTokens() {
int i = 1;
int pos = this.pos;
while (pos != -1) {
pos = str.indexOf(delim, pos + 1);
i++;
}
return i;
}
public boolean hasNext() {
return prevPos != -1;
}
public String next() {
if (pos == -1) {
if (prevPos == -1) {
return "";
}
String nextStr = str.substring(prevPos);
prevPos = -1;
return nextStr;
}
String nextStr = str.substring(prevPos, pos);
prevPos = pos + 1;
pos = str.indexOf(delim, prevPos);
return nextStr;
}
public void skip() {
if (pos == -1) {
prevPos = -1;
return;
}
prevPos = pos + 1;
pos = str.indexOf(delim, prevPos);
return;
}
public void skip(int times) {
int i = 0;
while (i++ < times) {
skip();
}
}
public String[] split() {
return splitToSize(countTokens());
}
public String[] splitToSize(int size) {
String[] out = new String[size];
int i = 0;
while (i < size && hasNext()) {
out[i] = next();
i++;
}
for (int j = i; j < size; j++) {
out[j] = "";
}
return out;
}
}