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