java.text.CharacterIterator Java Examples
The following examples show how to use
java.text.CharacterIterator.
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example #1
Source File: DictionaryBasedBreakIterator.java From jdk8u-jdk with GNU General Public License v2.0 | 6 votes |
/** * Advances the iterator one step backwards. * @return The position of the last boundary position before the * current iteration position */ @Override public int previous() { CharacterIterator text = getText(); // if we have cached break positions and we're still in the range // covered by them, just move one step backward in the cache if (cachedBreakPositions != null && positionInCache > 0) { --positionInCache; text.setIndex(cachedBreakPositions[positionInCache]); return cachedBreakPositions[positionInCache]; } // otherwise, dump the cache and use the inherited previous() method to move // backward. This may fill up the cache with new break positions, in which // case we have to mark our position in the cache else { cachedBreakPositions = null; int result = super.previous(); if (cachedBreakPositions != null) { positionInCache = cachedBreakPositions.length - 2; } return result; } }
Example #2
Source File: TaggingDictionaryExtractor.java From openccg with GNU Lesser General Public License v2.1 | 6 votes |
/** * Escape characters for text appearing as XML data, between tags. * * <P>The following characters are replaced with corresponding character entities : * <table border='1' cellpadding='3' cellspacing='0'> * <tr><th> Character </th><th> Encoding </th></tr> * <tr><td> < </td><td> < </td></tr> * <tr><td> > </td><td> > </td></tr> * <tr><td> & </td><td> & </td></tr> * <tr><td> " </td><td> "</td></tr> * <tr><td> ' </td><td> '</td></tr> * </table> * * <P>Note that JSTL's {@code <c:out>} escapes the exact same set of * characters as this method. <span class='highlight'>That is, {@code <c:out>} * is good for escaping to produce valid XML, but not for producing safe * HTML.</span> */ public static String forXML(String aText) { if (aText == null) return null; final StringBuilder result = new StringBuilder(); final StringCharacterIterator iterator = new StringCharacterIterator(aText); char character = iterator.current(); while (character != CharacterIterator.DONE) { if (character == '<') { result.append("<"); } else if (character == '>') { result.append(">"); } else if (character == '\"') { result.append("""); } else if (character == '\'') { result.append("'"); } else if (character == '&') { result.append("&"); } else { //the char is not a special one //add it to the result as is result.append(character); } character = iterator.next(); } return result.toString(); }
Example #3
Source File: Font.java From jdk8u-dev-jdk with GNU General Public License v2.0 | 6 votes |
/** * Indicates whether or not this <code>Font</code> can display the * text specified by the <code>iter</code> starting at * <code>start</code> and ending at <code>limit</code>. * * @param iter a {@link CharacterIterator} object * @param start the specified starting offset into the specified * <code>CharacterIterator</code>. * @param limit the specified ending offset into the specified * <code>CharacterIterator</code>. * @return an offset into <code>iter</code> that points * to the first character in <code>iter</code> that this * <code>Font</code> cannot display; or <code>-1</code> if * this <code>Font</code> can display all characters in * <code>iter</code>. * @since 1.2 */ public int canDisplayUpTo(CharacterIterator iter, int start, int limit) { Font2D font2d = getFont2D(); char c = iter.setIndex(start); for (int i = start; i < limit; i++, c = iter.next()) { if (font2d.canDisplay(c)) { continue; } if (!Character.isHighSurrogate(c)) { return i; } char c2 = iter.next(); // c2 could be CharacterIterator.DONE which is not a low surrogate. if (!Character.isLowSurrogate(c2)) { return i; } if (!font2d.canDisplay(Character.toCodePoint(c, c2))) { return i; } i++; } return -1; }
Example #4
Source File: AttributedStringTest.java From dragonwell8_jdk with GNU General Public License v2.0 | 6 votes |
private static final void checkIteratorText(AttributedCharacterIterator iterator, String expectedText) throws Exception { if (iterator.getEndIndex() - iterator.getBeginIndex() != expectedText.length()) { throwException(iterator, "text length doesn't match between original text and iterator"); } char c = iterator.first(); for (int i = 0; i < expectedText.length(); i++) { if (c != expectedText.charAt(i)) { throwException(iterator, "text content doesn't match between original text and iterator"); } c = iterator.next(); } if (c != CharacterIterator.DONE) { throwException(iterator, "iterator text doesn't end with DONE"); } }
Example #5
Source File: JSONValidator.java From pay with Apache License 2.0 | 6 votes |
private boolean literal(String text) { CharacterIterator ci = new StringCharacterIterator(text); char t = ci.first(); if (c != t) return false; int start = col; boolean ret = true; for (t = ci.next(); t != CharacterIterator.DONE; t = ci.next()) { if (t != nextCharacter()) { ret = false; break; } } nextCharacter(); if (!ret) error("literal " + text, start); return ret; }
Example #6
Source File: SwingUtilities2.java From jdk8u-jdk with GNU General Public License v2.0 | 6 votes |
private static AttributedCharacterIterator getTrimmedTrailingSpacesIterator (AttributedCharacterIterator iterator) { int curIdx = iterator.getIndex(); char c = iterator.last(); while(c != CharacterIterator.DONE && Character.isWhitespace(c)) { c = iterator.previous(); } if (c != CharacterIterator.DONE) { int endIdx = iterator.getIndex(); if (endIdx == iterator.getEndIndex() - 1) { iterator.setIndex(curIdx); return iterator; } else { AttributedString trimmedText = new AttributedString(iterator, iterator.getBeginIndex(), endIdx + 1); return trimmedText.getIterator(); } } else { return null; } }
Example #7
Source File: JSONValidator.java From alipay-sdk-java-all with Apache License 2.0 | 6 votes |
private boolean literal(String text) { CharacterIterator ci = new StringCharacterIterator(text); char t = ci.first(); if (c != t) { return false; } int start = col; boolean ret = true; for (t = ci.next(); t != CharacterIterator.DONE; t = ci.next()) { if (t != nextCharacter()) { ret = false; break; } } nextCharacter(); if (!ret) { error("literal " + text, start); } return ret; }
Example #8
Source File: MessageFormat.java From j2objc with Apache License 2.0 | 6 votes |
public static int append(Appendable result, CharacterIterator iterator) { try { int start = iterator.getBeginIndex(); int limit = iterator.getEndIndex(); int length = limit - start; if (start < limit) { result.append(iterator.first()); while (++start < limit) { result.append(iterator.next()); } } return length; } catch(IOException e) { throw new ICUUncheckedIOException(e); } }
Example #9
Source File: SearchIterator.java From fitnotifications with Apache License 2.0 | 6 votes |
/** * Set the target text to be searched. Text iteration will then begin at * the start of the text string. This method is useful if you want to * reuse an iterator to search within a different body of text. * * @param text new text iterator to look for match, * @exception IllegalArgumentException thrown when text is null or has * 0 length * @see #getTarget * @stable ICU 2.4 */ public void setTarget(CharacterIterator text) { if (text == null || text.getEndIndex() == text.getIndex()) { throw new IllegalArgumentException("Illegal null or empty text"); } text.setIndex(text.getBeginIndex()); search_.setTarget(text); search_.matchedIndex_ = DONE; search_.setMatchedLength(0); search_.reset_ = true; search_.isForwardSearching_ = true; if (search_.breakIter() != null) { // Create a clone of CharacterItearator, so it won't // affect the position currently held by search_.text() search_.breakIter().setText((CharacterIterator)text.clone()); } if (search_.internalBreakIter_ != null) { search_.internalBreakIter_.setText((CharacterIterator)text.clone()); } }
Example #10
Source File: AttributedStringTest.java From jdk8u_jdk with GNU General Public License v2.0 | 6 votes |
private static final void checkIteratorText(AttributedCharacterIterator iterator, String expectedText) throws Exception { if (iterator.getEndIndex() - iterator.getBeginIndex() != expectedText.length()) { throwException(iterator, "text length doesn't match between original text and iterator"); } char c = iterator.first(); for (int i = 0; i < expectedText.length(); i++) { if (c != expectedText.charAt(i)) { throwException(iterator, "text content doesn't match between original text and iterator"); } c = iterator.next(); } if (c != CharacterIterator.DONE) { throwException(iterator, "iterator text doesn't end with DONE"); } }
Example #11
Source File: JSONValidator.java From wechat-pay-sdk with MIT License | 6 votes |
private boolean valid(String input) { if ("".equals(input)) return true; boolean ret = true; it = new StringCharacterIterator(input); c = it.first(); col = 1; if (!value()) { ret = error("value", 1); } else { skipWhiteSpace(); if (c != CharacterIterator.DONE) { ret = error("end", col); } } return ret; }
Example #12
Source File: DictionaryBasedBreakIterator.java From hottub with GNU General Public License v2.0 | 5 votes |
/** * Sets the current iteration position to the last boundary position * before the specified position. * @param offset The position to begin searching from * @return The position of the last boundary before "offset" */ @Override public int preceding(int offset) { CharacterIterator text = getText(); checkOffset(offset, text); // if we have no cached break positions, or "offset" is outside the // range covered by the cache, we can just call the inherited routine // (which will eventually call other routines in this class that may // refresh the cache) if (cachedBreakPositions == null || offset <= cachedBreakPositions[0] || offset > cachedBreakPositions[cachedBreakPositions.length - 1]) { cachedBreakPositions = null; return super.preceding(offset); } // on the other hand, if "offset" is within the range covered by the cache, // then all we have to do is search the cache for the last break position // before "offset" else { positionInCache = 0; while (positionInCache < cachedBreakPositions.length && offset > cachedBreakPositions[positionInCache]) { ++positionInCache; } --positionInCache; text.setIndex(cachedBreakPositions[positionInCache]); return text.getIndex(); } }
Example #13
Source File: CodePointIterator.java From jdk8u-dev-jdk with GNU General Public License v2.0 | 5 votes |
public int next() { char cp1 = iter.current(); if (cp1 != CharacterIterator.DONE) { char cp2 = iter.next(); if (Character.isHighSurrogate(cp1) && cp2 != CharacterIterator.DONE) { if (Character.isLowSurrogate(cp2)) { iter.next(); return Character.toCodePoint(cp1, cp2); } } return cp1; } return DONE; }
Example #14
Source File: RuleBasedBreakIterator.java From jdk8u-dev-jdk with GNU General Public License v2.0 | 5 votes |
/** * Set the iterator to analyze a new piece of text. This function resets * the current iteration position to the beginning of the text. * @param newText An iterator over the text to analyze. */ @Override public void setText(CharacterIterator newText) { // Test iterator to see if we need to wrap it in a SafeCharIterator. // The correct behavior for CharacterIterators is to allow the // position to be set to the endpoint of the iterator. Many // CharacterIterators do not uphold this, so this is a workaround // to permit them to use this class. int end = newText.getEndIndex(); boolean goodIterator; try { newText.setIndex(end); // some buggy iterators throw an exception here goodIterator = newText.getIndex() == end; } catch(IllegalArgumentException e) { goodIterator = false; } if (goodIterator) { text = newText; } else { text = new SafeCharIterator(newText); } text.first(); cachedLastKnownBreak = BreakIterator.DONE; }
Example #15
Source File: AttributedStringTest.java From dragonwell8_jdk with GNU General Public License v2.0 | 5 votes |
private static final void checkIteratorSubranges(AttributedCharacterIterator iterator, Set keys, int[] expectedLimits) throws Exception { int previous = 0; char c = iterator.first(); for (int i = 0; i < expectedLimits.length; i++) { if (iterator.getRunStart(keys) != previous || iterator.getRunLimit(keys) != expectedLimits[i]) { throwException(iterator, "run boundaries are not as expected: " + iterator.getRunStart(keys) + ", " + iterator.getRunLimit(keys) + " for keys " + keys); } previous = expectedLimits[i]; c = iterator.setIndex(previous); } if (c != CharacterIterator.DONE) { throwException(iterator, "iterator's run sequence doesn't end with DONE"); } }
Example #16
Source File: StandardGlyphVector.java From TencentKona-8 with GNU General Public License v2.0 | 5 votes |
public StandardGlyphVector(Font font, CharacterIterator iter, FontRenderContext frc) { int offset = iter.getBeginIndex(); char[] text = new char [iter.getEndIndex() - offset]; for(char c = iter.first(); c != CharacterIterator.DONE; c = iter.next()) { text[iter.getIndex() - offset] = c; } init(font, text, 0, text.length, frc, UNINITIALIZED_FLAGS); }
Example #17
Source File: AttributedStringTest.java From openjdk-jdk9 with GNU General Public License v2.0 | 5 votes |
private static final void checkIteratorSubranges(AttributedCharacterIterator iterator, Attribute key, int[] expectedLimits) throws Exception { int previous = 0; char c = iterator.first(); for (int i = 0; i < expectedLimits.length; i++) { if (iterator.getRunStart(key) != previous || iterator.getRunLimit(key) != expectedLimits[i]) { throwException(iterator, "run boundaries are not as expected: " + iterator.getRunStart(key) + ", " + iterator.getRunLimit(key) + " for key " + key); } previous = expectedLimits[i]; c = iterator.setIndex(previous); } if (c != CharacterIterator.DONE) { throwException(iterator, "iterator's run sequence doesn't end with DONE"); } }
Example #18
Source File: RuleBasedBreakIterator.java From openjdk-jdk8u-backup with GNU General Public License v2.0 | 5 votes |
/** * Set the iterator to analyze a new piece of text. This function resets * the current iteration position to the beginning of the text. * @param newText An iterator over the text to analyze. */ @Override public void setText(CharacterIterator newText) { // Test iterator to see if we need to wrap it in a SafeCharIterator. // The correct behavior for CharacterIterators is to allow the // position to be set to the endpoint of the iterator. Many // CharacterIterators do not uphold this, so this is a workaround // to permit them to use this class. int end = newText.getEndIndex(); boolean goodIterator; try { newText.setIndex(end); // some buggy iterators throw an exception here goodIterator = newText.getIndex() == end; } catch(IllegalArgumentException e) { goodIterator = false; } if (goodIterator) { text = newText; } else { text = new SafeCharIterator(newText); } text.first(); cachedLastKnownBreak = BreakIterator.DONE; }
Example #19
Source File: CharacterIteratorWrapper.java From openjdk-jdk9 with GNU General Public License v2.0 | 5 votes |
/** * Creates a clone of this iterator. Clones the underlying character iterator. * @see UCharacterIterator#clone() */ public Object clone(){ try { CharacterIteratorWrapper result = (CharacterIteratorWrapper) super.clone(); result.iterator = (CharacterIterator)this.iterator.clone(); return result; } catch (CloneNotSupportedException e) { return null; // only invoked if bad underlying character iterator } }
Example #20
Source File: ComponentLine.java From netbeans with Apache License 2.0 | 5 votes |
ComponentLine(AttributedCharacterIterator it, Font defaultFont, Color defaultColor) { for (char c = it.first(); c != CharacterIterator.DONE; c = it.next()) { Font font = (Font) it.getAttribute(TextAttribute.FONT); Color color = (Color) it.getAttribute(TextAttribute.FOREGROUND); mySymbols.add(new Symbol(c, createFont(font, defaultFont), createColor(color, defaultColor))); } checkSpaces(defaultFont, defaultColor); }
Example #21
Source File: RuleBasedBreakIterator.java From openjdk-jdk8u with GNU General Public License v2.0 | 5 votes |
/** * Sets the current iteration position to the beginning of the text. * (i.e., the CharacterIterator's starting offset). * @return The offset of the beginning of the text. */ @Override public int first() { CharacterIterator t = getText(); t.first(); return t.getIndex(); }
Example #22
Source File: BreakIteratorTest.java From j2objc with Apache License 2.0 | 5 votes |
public void testSetTextCharacterIterator() { try { iterator.setText((CharacterIterator) null); fail(); } catch (NullPointerException e) { } CharacterIterator it = new StringCharacterIterator("abc"); iterator.setText(it); assertSame(it, iterator.getText()); }
Example #23
Source File: CharArrayIteratorTests.java From elasticsearch-plugin-bundle with GNU Affero General Public License v3.0 | 5 votes |
public void testLast() { CharArrayIterator ci = new CharArrayIterator(); ci.setText("testing".toCharArray(), 0, "testing".length()); assertEquals('g', ci.last()); assertEquals(ci.getIndex(), ci.getEndIndex() - 1); ci.setText(new char[] {}, 0, 0); assertEquals(CharacterIterator.DONE, ci.last()); assertEquals(ci.getEndIndex(), ci.getIndex()); }
Example #24
Source File: StringSearch.java From j2objc with Apache License 2.0 | 5 votes |
private static int codePointAt(CharacterIterator iter, int index) { int currentIterIndex = iter.getIndex(); char codeUnit = iter.setIndex(index); int cp = codeUnit; if (Character.isHighSurrogate(codeUnit)) { char nextUnit = iter.next(); if (Character.isLowSurrogate(nextUnit)) { cp = Character.toCodePoint(codeUnit, nextUnit); } } iter.setIndex(currentIterIndex); // restore iter position return cp; }
Example #25
Source File: RuleBasedBreakIterator.java From openjdk-8 with GNU General Public License v2.0 | 5 votes |
/** * Set the iterator to analyze a new piece of text. This function resets * the current iteration position to the beginning of the text. * @param newText An iterator over the text to analyze. */ @Override public void setText(CharacterIterator newText) { // Test iterator to see if we need to wrap it in a SafeCharIterator. // The correct behavior for CharacterIterators is to allow the // position to be set to the endpoint of the iterator. Many // CharacterIterators do not uphold this, so this is a workaround // to permit them to use this class. int end = newText.getEndIndex(); boolean goodIterator; try { newText.setIndex(end); // some buggy iterators throw an exception here goodIterator = newText.getIndex() == end; } catch(IllegalArgumentException e) { goodIterator = false; } if (goodIterator) { text = newText; } else { text = new SafeCharIterator(newText); } text.first(); cachedLastKnownBreak = BreakIterator.DONE; }
Example #26
Source File: AttributedStringTest.java From jdk8u_jdk with GNU General Public License v2.0 | 5 votes |
private static final void checkIteratorSubranges(AttributedCharacterIterator iterator, int[] expectedLimits) throws Exception { int previous = 0; char c = iterator.first(); for (int i = 0; i < expectedLimits.length; i++) { if (iterator.getRunStart() != previous || iterator.getRunLimit() != expectedLimits[i]) { throwException(iterator, "run boundaries are not as expected: " + iterator.getRunStart() + ", " + iterator.getRunLimit()); } previous = expectedLimits[i]; c = iterator.setIndex(previous); } if (c != CharacterIterator.DONE) { throwException(iterator, "iterator's run sequence doesn't end with DONE"); } }
Example #27
Source File: CharacterIteratorWrapper.java From openjdk-jdk9 with GNU General Public License v2.0 | 5 votes |
/** * @see UCharacterIterator#previous() */ public int previous() { int i = iterator.previous(); if(i==CharacterIterator.DONE){ return DONE; } return i; }
Example #28
Source File: AttributedStringTest.java From openjdk-jdk9 with GNU General Public License v2.0 | 5 votes |
private static final void checkIteratorSubranges(AttributedCharacterIterator iterator, int[] expectedLimits) throws Exception { int previous = 0; char c = iterator.first(); for (int i = 0; i < expectedLimits.length; i++) { if (iterator.getRunStart() != previous || iterator.getRunLimit() != expectedLimits[i]) { throwException(iterator, "run boundaries are not as expected: " + iterator.getRunStart() + ", " + iterator.getRunLimit()); } previous = expectedLimits[i]; c = iterator.setIndex(previous); } if (c != CharacterIterator.DONE) { throwException(iterator, "iterator's run sequence doesn't end with DONE"); } }
Example #29
Source File: CharacterIteratorWrapper.java From dragonwell8_jdk with GNU General Public License v2.0 | 5 votes |
/** * @see UCharacterIterator#current() */ public int current() { int c = iterator.current(); if(c==CharacterIterator.DONE){ return DONE; } return c; }
Example #30
Source File: RuleBasedBreakIterator.java From Bytecoder with Apache License 2.0 | 5 votes |
/** * Set the iterator to analyze a new piece of text. This function resets * the current iteration position to the beginning of the text. * @param newText An iterator over the text to analyze. */ @Override public void setText(CharacterIterator newText) { // Test iterator to see if we need to wrap it in a SafeCharIterator. // The correct behavior for CharacterIterators is to allow the // position to be set to the endpoint of the iterator. Many // CharacterIterators do not uphold this, so this is a workaround // to permit them to use this class. int end = newText.getEndIndex(); boolean goodIterator; try { newText.setIndex(end); // some buggy iterators throw an exception here goodIterator = newText.getIndex() == end; } catch(IllegalArgumentException e) { goodIterator = false; } if (goodIterator) { text = newText; } else { text = new SafeCharIterator(newText); } text.first(); cachedLastKnownBreak = BreakIterator.DONE; }