Java 类android.text.GetChars 实例源码
项目:JotaTextEditor
文件:TextUtils.java
public static void getChars(CharSequence s, int start, int end,
char[] dest, int destoff) {
Class c = s.getClass();
if (c == String.class)
((String) s).getChars(start, end, dest, destoff);
else if (c == StringBuffer.class)
((StringBuffer) s).getChars(start, end, dest, destoff);
else if (c == StringBuilder.class)
((StringBuilder) s).getChars(start, end, dest, destoff);
else if (s instanceof GetChars)
((GetChars) s).getChars(start, end, dest, destoff);
else {
for (int i = start; i < end; i++)
dest[destoff++] = s.charAt(i);
}
}
项目:Tehreer-Android
文件:StringUtils.java
public static String copyString(CharSequence charSequence) {
int length = charSequence.length();
char[] chars = new char[length];
if (charSequence instanceof GetChars) {
((GetChars)charSequence).getChars(0, length, chars, 0);
} else {
for (int i = 0; i < length; i++) {
chars[i] = charSequence.charAt(i);
}
}
return new String(chars);
}
项目:JotaTextEditor
文件:TextUtils.java
public static int indexOf(CharSequence s, char ch, int start, int end) {
Class c = s.getClass();
if (s instanceof GetChars || c == StringBuffer.class ||
c == StringBuilder.class || c == String.class) {
final int INDEX_INCREMENT = 500;
char[] temp = obtain(INDEX_INCREMENT);
while (start < end) {
int segend = start + INDEX_INCREMENT;
if (segend > end)
segend = end;
getChars(s, start, segend, temp, 0);
int count = segend - start;
for (int i = 0; i < count; i++) {
if (temp[i] == ch) {
recycle(temp);
return i + start;
}
}
start = segend;
}
recycle(temp);
return -1;
}
for (int i = start; i < end; i++)
if (s.charAt(i) == ch)
return i;
return -1;
}
项目:aria2-android
文件:AppendableStringBuilder.java
public final void append(@NonNull GetChars s) {
int length = s.length();
s.getChars(0, length, value, count);
this.count += length;
}
项目:aria2-android
文件:AppendableStringBuilder.java
public final void append(@NonNull GetChars s, int start, int end) {
int length = end - start;
s.getChars(start, end, value, count);
this.count += length;
}
项目:JotaTextEditor
文件:TextUtils.java
public static int lastIndexOf(CharSequence s, char ch,
int start, int last) {
if (last < 0)
return -1;
if (last >= s.length())
last = s.length() - 1;
int end = last + 1;
Class c = s.getClass();
if (s instanceof GetChars || c == StringBuffer.class ||
c == StringBuilder.class || c == String.class) {
final int INDEX_INCREMENT = 500;
char[] temp = obtain(INDEX_INCREMENT);
while (start < end) {
int segstart = end - INDEX_INCREMENT;
if (segstart < start)
segstart = start;
getChars(s, segstart, end, temp, 0);
int count = end - segstart;
for (int i = count - 1; i >= 0; i--) {
if (temp[i] == ch) {
recycle(temp);
return i + segstart;
}
}
end = segstart;
}
recycle(temp);
return -1;
}
for (int i = end - 1; i >= start; i--)
if (s.charAt(i) == ch)
return i;
return -1;
}