/** * Alias of {@link #toCharArray()} * * @return char array buf copy of this FastStr */ public char[] charArray() { char[] newBuf = new char[size()]; copyTo(newBuf, 0); return newBuf; }
/** * Alias of {@link #toCharArray()} * * @return char array buf copy of this FastStr */ public char[] charArray() { char[] newBuf = new char[size()]; copyTo(newBuf, 0); return newBuf; }
@Override public FastStr copy() { if (EMPTY_STR == this) return this; return unsafeOf(charArray(), 0, size()); }
@Override public int lastIndexOf(CharSequence str, int fromIndex) { char[] strBuf = bufOf(str); int sz = size(); return S.lastIndexOf(buf, begin, sz, strBuf, 0, strBuf.length, fromIndex); }
@Override public FastStr append(Character character) { int sz = size(); char[] newBuf = new char[sz + 1]; copyTo(newBuf, 0); newBuf[sz] = character; return new FastStr(newBuf, 0, sz + 1); }
@Override public int indexOf(CharSequence str, int fromIndex) { char[] strBuf = bufOf(str); return S.indexOf(buf, begin, size(), strBuf, 0, strBuf.length, fromIndex); }
@Override public FastStr reverse() { int sz = size(); char[] newBuf = new char[sz]; for (int i = 0, j = sz - 1; i < sz; ) { newBuf[j--] = buf[toInternalId(i++)]; } return new FastStr(newBuf, 0, sz); }
@Override public FastStr append(Character character) { int sz = size(); char[] newBuf = new char[sz + 1]; copyTo(newBuf, 0); newBuf[sz] = character; return new FastStr(newBuf, 0, sz + 1); }
@Override public FastStr reverse() { int sz = size(); char[] newBuf = new char[sz]; for (int i = 0, j = sz - 1; i < sz; ) { newBuf[j--] = buf[toInternalId(i++)]; } return new FastStr(newBuf, 0, sz); }
public FastStr strip(String prefix, String suffix) { FastStr s = this; if (startsWith(prefix)) s = s.substr(prefix.length()); if (s.endsWith(suffix)) s = s.substr(0, s.size() - suffix.length()); return s; }
@Override public FastStr append(char... array) { int sz = size(), sz2 = array.length; if (0 == sz2) return this; if (0 == sz) return of(array); char[] newBuf = new char[sz + sz2]; copyTo(newBuf, 0); for (int i = 0; i < sz2; ++i) { newBuf[sz + i] = array[i]; } return new FastStr(newBuf, 0, sz + sz2); }
@Override public FastStr dropWhile($.Function<? super Character, Boolean> predicate) { int sz = size(); if (sz == 0) return EMPTY_STR; int b = -1, e = toInternalId(sz); for (int i = 0; i < sz; ++i) { char c = charAt(i); b = toInternalId(i); if (!predicate.apply(c)) break; } return unsafeOf(buf, b, e); }
@Override public FastStr append(C.List<Character> list) { int sz = size(), sz2 = list.size(); if (0 == sz2) return this; if (0 == sz) return of(list); char[] newBuf = new char[sz + sz2]; copyTo(newBuf, 0); for (int i = 0; i < sz2; ++i) { newBuf[sz + i] = list.get(i); } return new FastStr(newBuf, 0, sz + sz2); }
@Override public FastStr dropWhile($.Function<? super Character, Boolean> predicate) { int sz = size(); if (sz == 0) return EMPTY_STR; int b = -1, e = toInternalId(sz); for (int i = 0; i < sz; ++i) { char c = charAt(i); b = toInternalId(i); if (!predicate.apply(c)) break; } return unsafeOf(buf, b, e); }
@Override public FastStr takeWhile($.Function<? super Character, Boolean> predicate) { if (isEmpty()) { return EMPTY_STR; } int sz = size(), b = toInternalId(0), e = -1; for (int i = 0; i < sz; ++i) { char c = charAt(i); e = toInternalId(i); if (!predicate.apply(c)) break; } return unsafeOf(buf, b, e); }