• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /* GENERATED SOURCE. DO NOT MODIFY. */
2 // © 2016 and later: Unicode, Inc. and others.
3 // License & terms of use: http://www.unicode.org/copyright.html#License
4 /*
5  *******************************************************************************
6  * Copyright (C) 2009, International Business Machines Corporation and         *
7  * others. All Rights Reserved.                                                *
8  *******************************************************************************
9  */
10 package ohos.global.icu.impl.locale;
11 
12 /**
13  * @hide exposed on OHOS
14  */
15 public class StringTokenIterator {
16     private String _text;
17     private String _dlms;
18 
19     private String _token;
20     private int _start;
21     private int _end;
22     private boolean _done;
23 
StringTokenIterator(String text, String dlms)24     public StringTokenIterator(String text, String dlms) {
25         _text = text;
26         _dlms = dlms;
27         setStart(0);
28     }
29 
first()30     public String first() {
31         setStart(0);
32         return _token;
33     }
34 
current()35     public String current() {
36         return _token;
37     }
38 
currentStart()39     public int currentStart() {
40         return _start;
41     }
42 
currentEnd()43     public int currentEnd() {
44         return _end;
45     }
46 
isDone()47     public boolean isDone() {
48         return _done;
49     }
50 
next()51     public String next() {
52         if (hasNext()) {
53             _start = _end + 1;
54             _end = nextDelimiter(_start);
55             _token = _text.substring(_start, _end);
56         } else {
57             _start = _end;
58             _token = null;
59             _done = true;
60         }
61         return _token;
62     }
63 
hasNext()64     public boolean hasNext() {
65         return (_end < _text.length());
66     }
67 
setStart(int offset)68     public StringTokenIterator setStart(int offset) {
69         if (offset > _text.length()) {
70             throw new IndexOutOfBoundsException();
71         }
72         _start = offset;
73         _end = nextDelimiter(_start);
74         _token = _text.substring(_start, _end);
75         _done = false;
76         return this;
77     }
78 
setText(String text)79     public StringTokenIterator setText(String text) {
80         _text = text;
81         setStart(0);
82         return this;
83     }
84 
nextDelimiter(int start)85     private int nextDelimiter(int start) {
86         int idx = start;
87         outer: while (idx < _text.length()) {
88             char c = _text.charAt(idx);
89             for (int i = 0; i < _dlms.length(); i++) {
90                 if (c == _dlms.charAt(i)) {
91                     break outer;
92                 }
93             }
94             idx++;
95         }
96         return idx;
97     }
98 }
99 
100