J2ME中的StringTokenizer

    技术2022-05-11  135

    在se中用惯了的StringTokenizer,在me中没有了.怎么办呢,分割好的字符串是不得不解析的,老板交代的任务是要做的:).本来想自己土法上马做一个,可是"重新发明轮子",好像不是那么高明,先用google找了找,果然有高人已经实现了.代码在下面: import java.util.*; public class StringTokenizer implements Enumeration { private void setMaxDelimChar() { if(delimiters == null) { maxDelimChar = '/0'; return; } char c = '/0'; for(int i = 0; i < delimiters.length(); i++) { char c1 = delimiters.charAt(i); if(c < c1) c = c1; } maxDelimChar = c; } public StringTokenizer(String s, String s1, boolean flag) { currentPosition = 0; newPosition = -1; delimsChanged = false; str = s; maxPosition = s.length(); delimiters = s1; retDelims = flag; setMaxDelimChar(); } public StringTokenizer(String s, String s1) { this(s, s1, false); } public StringTokenizer(String s) { this(s, " /t/n/r/f"false); } private int skipDelimiters(int i) { if(delimiters == null) throw new NullPointerException(); int j; for(j = i; !retDelims && j < maxPosition; j++) { char c = str.charAt(j); if(c > maxDelimChar || delimiters.indexOf(c) < 0) break; } return j; } private int scanToken(int i) { int j; for(j = i; j < maxPosition; j++) { char c = str.charAt(j); if(c <= maxDelimChar && delimiters.indexOf(c) >= 0) break; } if(retDelims && i == j) { char c1 = str.charAt(j); if(c1 <= maxDelimChar && delimiters.indexOf(c1) >= 0) j++; } return j; } public boolean hasMoreTokens() { newPosition = skipDelimiters(currentPosition); return newPosition < maxPosition; } public String nextToken() { currentPosition = newPosition < 0 || delimsChanged ? skipDelimiters(currentPosition) : newPosition; delimsChanged = false; newPosition = -1; if(currentPosition >= maxPosition) { throw new NoSuchElementException(); } else { int i = currentPosition; currentPosition = scanToken(currentPosition); return str.substring(i, currentPosition); } } public String nextToken(String s) { delimiters = s; delimsChanged = true; setMaxDelimChar(); return nextToken(); } public boolean hasMoreElements() { return hasMoreTokens(); } public Object nextElement() { return nextToken(); } public int countTokens() { int i = 0; for(int j = currentPosition; j < maxPosition;) { j = skipDelimiters(j); if(j >= maxPosition) break; j = scanToken(j); i++; } return i; } private int currentPosition; private int newPosition; private int maxPosition; private String str; private String delimiters; private boolean retDelims; private boolean delimsChanged; private char maxDelimChar; }

    最新回复(0)