/** * Returns a subsequence */ public override CharSequence subSequence(int start, int end) { if (end <= start) { return(StringBuilderValue.EMPTY); } StringValue stringValue; if (end - start < 1024) { stringValue = new StringBuilderValue(end - start); } else { stringValue = new LargeStringBuilderValue(); } int endChunk = end / SIZE; while (start < end) { int startChunk = start / SIZE; int startOffset = start % SIZE; if (startChunk == endChunk) { stringValue.append(_bufferList[startChunk], startOffset, (end - start)); return(stringValue); } else { int len = SIZE - startOffset; stringValue.append(_bufferList[startChunk], startOffset, len); start += len; } } return(stringValue); }
/** * Convert to lower case. */ public override StringValue toUpperCase() { int length = _length; StringValue string = new LargeStringBuilderValue(); byte [][] bufferList = _bufferList; for (int i = 0; i < length; i++) { int ch = bufferList[i / SIZE][i % SIZE] & 0xff; if ('a' <= ch && ch <= 'z') { ch = (ch + 'A' - 'a'); } string.append((char)ch); } return(string); }
/** * Append to a string builder. */ public override StringValue appendTo(LargeStringBuilderValue sb) { return(sb.append(_value)); }
/** * Append to a string builder. */ public override StringValue appendTo(LargeStringBuilderValue sb) { return(getValue().appendTo(sb)); }
/** * Append to a binary builder. */ public override StringValue appendTo(LargeStringBuilderValue sb) { return(sb.append(ToString(Env.getInstance()))); }