mirror of
https://github.com/corda/corda.git
synced 2024-12-28 16:58:55 +00:00
implement StringTokenizer
This commit is contained in:
parent
3526fbfcb7
commit
f907d9e08f
@ -1,7 +1,94 @@
|
||||
package java.util;
|
||||
|
||||
public class StringTokenizer implements Enumerator {
|
||||
public class StringTokenizer implements Enumeration {
|
||||
private final String in;
|
||||
private String token;
|
||||
private boolean includeDelimiters;
|
||||
private String delimiters;
|
||||
private final boolean includeDelimiters;
|
||||
private int position;
|
||||
|
||||
public StringTokenizer(String in, String delimiters,
|
||||
boolean includeDelimiters)
|
||||
{
|
||||
this.in = in;
|
||||
this.delimiters = delimiters;
|
||||
this.includeDelimiters = includeDelimiters;
|
||||
}
|
||||
|
||||
public StringTokenizer(String in, String delimiters) {
|
||||
this(in, delimiters, false);
|
||||
}
|
||||
|
||||
public StringTokenizer(String in) {
|
||||
this(in, " \t\r\n\f");
|
||||
}
|
||||
|
||||
private boolean isDelimiter(char c) {
|
||||
return delimiters.indexOf(c) >= 0;
|
||||
}
|
||||
|
||||
public int countTokens() {
|
||||
int count = 0;
|
||||
boolean sawNonDelimiter = false;
|
||||
for (int i = position; i < in.length(); ++i) {
|
||||
if (isDelimiter(in.charAt(i))) {
|
||||
if (includeDelimiters || sawNonDelimiter) {
|
||||
++ count;
|
||||
}
|
||||
sawNonDelimiter = false;
|
||||
} else {
|
||||
sawNonDelimiter = true;
|
||||
}
|
||||
}
|
||||
|
||||
if (sawNonDelimiter) {
|
||||
++ count;
|
||||
}
|
||||
|
||||
return count;
|
||||
}
|
||||
|
||||
public boolean hasMoreTokens() {
|
||||
for (int i = position; i < in.length(); ++i) {
|
||||
if (isDelimiter(in.charAt(i))) {
|
||||
if (includeDelimiters) {
|
||||
return true;
|
||||
}
|
||||
} else {
|
||||
position = i;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public String nextToken() {
|
||||
for (int i = position; i < in.length(); ++i) {
|
||||
if (isDelimiter(in.charAt(i))) {
|
||||
if (includeDelimiters) {
|
||||
return in.substring(i, i + 1);
|
||||
}
|
||||
} else {
|
||||
position = i;
|
||||
while (position < in.length() && ! isDelimiter(in.charAt(i))) {
|
||||
++ position;
|
||||
}
|
||||
return in.substring(i, position);
|
||||
}
|
||||
}
|
||||
throw new NoSuchElementException();
|
||||
}
|
||||
|
||||
public String nextToken(String delimiters) {
|
||||
this.delimiters = delimiters;
|
||||
return nextToken();
|
||||
}
|
||||
|
||||
public boolean hasMoreElements() {
|
||||
return hasMoreTokens();
|
||||
}
|
||||
|
||||
public Object nextElement() {
|
||||
return nextToken();
|
||||
}
|
||||
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user