]> gitweb.fperrin.net Git - Dictionary.git/blob - jars/icu4j-4_8_1_1/main/classes/core/src/com/ibm/icu/impl/locale/StringTokenIterator.java
Added flags.
[Dictionary.git] / jars / icu4j-4_8_1_1 / main / classes / core / src / com / ibm / icu / impl / locale / StringTokenIterator.java
1 /*
2  *******************************************************************************
3  * Copyright (C) 2009, International Business Machines Corporation and         *
4  * others. All Rights Reserved.                                                *
5  *******************************************************************************
6  */
7 package com.ibm.icu.impl.locale;
8
9 public class StringTokenIterator {
10     private String _text;
11     private String _dlms;
12
13     private String _token;
14     private int _start;
15     private int _end;
16     private boolean _done;
17
18     public StringTokenIterator(String text, String dlms) {
19         _text = text;
20         _dlms = dlms;
21         setStart(0);
22     }
23
24     public String first() {
25         setStart(0);
26         return _token;
27     }
28
29     public String current() {
30         return _token;
31     }
32
33     public int currentStart() {
34         return _start;
35     }
36
37     public int currentEnd() {
38         return _end;
39     }
40
41     public boolean isDone() {
42         return _done;
43     }
44
45     public String next() {
46         if (hasNext()) {
47             _start = _end + 1;
48             _end = nextDelimiter(_start);
49             _token = _text.substring(_start, _end);
50         } else {
51             _start = _end;
52             _token = null;
53             _done = true;
54         }
55         return _token;
56     }
57
58     public boolean hasNext() {
59         return (_end < _text.length());
60     }
61
62     public StringTokenIterator setStart(int offset) {
63         if (offset > _text.length()) {
64             throw new IndexOutOfBoundsException();
65         }
66         _start = offset;
67         _end = nextDelimiter(_start);
68         _token = _text.substring(_start, _end);
69         _done = false;
70         return this;
71     }
72
73     public StringTokenIterator setText(String text) {
74         _text = text;
75         setStart(0);
76         return this;
77     }
78
79     private int nextDelimiter(int start) {
80         int idx = start;
81         outer: while (idx < _text.length()) {
82             char c = _text.charAt(idx);
83             for (int i = 0; i < _dlms.length(); i++) {
84                 if (c == _dlms.charAt(i)) {
85                     break outer;
86                 }
87             }
88             idx++;
89         }
90         return idx;
91     }
92 }
93