@Override public String toString() { int iMax = length(); StringBuilder sb = new StringBuilder(iMax); for (int i = 0; i < iMax; i++) { sb.append(charAt(i)); } return sb.toString(); }
/** * @return the first character of the sequence or '\0' if empty */ @Override public char firstChar() { return isEmpty() ? '\0' : charAt(0); }
@Override public int compareTo(CharSequence other) { int len1 = length(); int len2 = other.length(); int iMax = len1 <= len2 ? len1 : len2; for (int i = 0; i < iMax; i++) { char c1 = charAt(i); char c2 = other.charAt(i); if (c1 != c2) { return c1 - c2; } } return len1 - len2; }
@Override public int lastIndexOfAny(char c1, char c2, int startIndex, int fromIndex) { if (startIndex < 0) startIndex = 0; if (fromIndex >= length()) fromIndex = length(); else fromIndex++; for (int i = fromIndex; i-- > startIndex; ) { final char c = charAt(i); if (c == c1 || c == c2) return i; } return -1; }
@Override public char endCharAt(int index) { if (index < 0 || index >= length()) return '\0'; return charAt(length() - index); }
@Override public int indexOf(char c, int fromIndex, int endIndex) { if (fromIndex < 0) fromIndex = 0; if (endIndex > length()) endIndex = length(); for (int i = fromIndex; i < endIndex; i++) { if (charAt(i) == c) return i; } return -1; }
@Override public int indexOfAny(char c1, char c2, int fromIndex, int endIndex) { if (fromIndex < 0) fromIndex = 0; if (endIndex > length()) endIndex = length(); for (int i = fromIndex; i < endIndex; i++) { char c = charAt(i); if (c == c1 || c == c2) return i; } return -1; }
@Override public int lastIndexOf(char c, int startIndex, int fromIndex) { if (startIndex < 0) startIndex = 0; if (fromIndex >= length()) fromIndex = length(); else fromIndex++; for (int i = fromIndex; i-- > startIndex; ) { if (charAt(i) == c) return i; } return -1; }
@Override public int indexOfNot(char c, int fromIndex, int endIndex) { if (fromIndex < 0) fromIndex = 0; if (endIndex > length()) endIndex = length(); for (int i = fromIndex; i < endIndex; i++) { if (charAt(i) != c) return i; } return -1; }
@Override public int indexOfAny(char c1, char c2, char c3, int fromIndex, int endIndex) { if (fromIndex < 0) fromIndex = 0; if (endIndex > length()) endIndex = length(); for (int i = fromIndex; i < endIndex; i++) { char c = charAt(i); if (c == c1 || c == c2 || c == c3) return i; } return -1; }
@Override public int indexOfAnyNot(char c1, char c2, int fromIndex, int endIndex) { if (fromIndex < 0) fromIndex = 0; if (endIndex > length()) endIndex = length(); for (int i = fromIndex; i < endIndex; i++) { char c = charAt(i); if (c != c1 && c != c2) return i; } return -1; }
@Override public int indexOfAnyNot(char c1, char c2, char c3, int fromIndex, int endIndex) { if (fromIndex < 0) fromIndex = 0; if (endIndex > length()) endIndex = length(); for (int i = fromIndex; i < endIndex; i++) { char c = charAt(i); if (c != c1 && c != c2 && c != c3) return i; } return -1; }
@Override public int lastIndexOfAnyNot(char c1, char c2, char c3, int startIndex, int fromIndex) { if (startIndex < 0) startIndex = 0; if (fromIndex >= length()) fromIndex = length(); else fromIndex++; for (int i = fromIndex; i-- > startIndex; ) { final char c = charAt(i); if (c != c1 && c != c2 && c != c3) return i; } return -1; }
/** * @return the last character of the sequence or '\0' if empty */ @Override public char lastChar() { return isEmpty() ? '\0' : charAt(length() - 1); }
@Override public int lastIndexOfAny(char c1, char c2, char c3, int startIndex, int fromIndex) { if (startIndex < 0) startIndex = 0; if (fromIndex >= length()) fromIndex = length(); else fromIndex++; for (int i = fromIndex; i-- > startIndex; ) { final char c = charAt(i); if (c == c1 || c == c2 || c == c3) return i; } return -1; }
@Override public int lastIndexOfNot(char c, int startIndex, int fromIndex) { if (startIndex < 0) startIndex = 0; if (fromIndex >= length()) fromIndex = length(); else fromIndex++; for (int i = fromIndex; i-- > startIndex; ) { if (charAt(i) != c) return i; } return -1; }
@Override public int lastIndexOfAnyNot(char c1, char c2, int startIndex, int fromIndex) { if (startIndex < 0) startIndex = 0; if (fromIndex >= length()) fromIndex = length(); else fromIndex++; for (int i = fromIndex; i-- > startIndex; ) { final char c = charAt(i); if (c != c1 && c != c2) return i; } return -1; }
@Override public char midCharAt(int index) { if (index < -length() || index >= length()) return '\0'; return charAt(index < 0 ? length() + index : index); }
@Override public BasedSequence trimTailBlankLines() { int iMax = length(); int lastEOL = iMax; int i; for (i = iMax; i-- > 0; ) { char c = charAt(i); if (c == '\n') lastEOL = i + 1; else if (lastEOL == iMax || (c != ' ' && c != '\t')) break; } if (i < 0) return subSequence(0, 0); if (lastEOL != iMax) return subSequence(0, lastEOL); return this; }
@Override public BasedSequence trimLeadBlankLines() { int iMax = length(); int lastEOL = 0; int i; for (i = 0; i < iMax; i++) { char c = charAt(i); if (c == '\n') lastEOL = i + 1; else if (c != ' ' && c != '\t') break; } if (i == iMax) return subSequence(iMax, iMax); if (lastEOL != 0) return subSequence(lastEOL); return this; }