mirror of
https://github.com/corda/corda.git
synced 2024-12-29 09:18:58 +00:00
implement StringTokenizer
This commit is contained in:
parent
3526fbfcb7
commit
f907d9e08f
@ -1,7 +1,94 @@
|
|||||||
package java.util;
|
package java.util;
|
||||||
|
|
||||||
public class StringTokenizer implements Enumerator {
|
public class StringTokenizer implements Enumeration {
|
||||||
private final String in;
|
private final String in;
|
||||||
private String token;
|
private String delimiters;
|
||||||
private boolean includeDelimiters;
|
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