Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public final class GFStringBuilder
- {
- private final char[] result;
- private String format;
- private int formatCursor;
- private int resultCursor;
- private static GFStringBuilder inst = new GFStringBuilder(1024);
- private GFStringBuilder(int capacity)
- {
- result = new char[capacity];
- }
- // Startet die Formatierung mit einem Format-String.
- public static GFStringBuilder format(String format)
- {
- inst.format = format;
- inst.formatCursor = 0;
- inst.resultCursor = 0;
- return inst;
- }
- // Ersetzt den nächsten Platzhalter durch einen Integer.
- public GFStringBuilder eat(int value)
- {
- moveToNextPlaceholder();
- if (value < 0)
- {
- result[resultCursor++] = '-';
- value = -value;
- }
- else if (value == 0)
- {
- result[resultCursor++] = '0';
- return inst;
- }
- // Integer in Text umwandeln.
- int t = 1000000000;
- while (value <= t) t /= 10;
- while (t > 0)
- {
- int d = value / t;
- result[resultCursor++] = (char)('0' + d);
- value -= d * t;
- t /= 10;
- }
- return inst;
- }
- // Ersetzt den nächsten Platzhalter durch einen String.
- public GFStringBuilder eat(char[] seq)
- {
- moveToNextPlaceholder();
- for (int i = 0; seq[i] != 0 && i < seq.length; ++i) result[resultCursor++] = seq[i];
- return inst;
- }
- // Ersetzt den nächsten Platzhalter durch einen String.
- public GFStringBuilder eat(String str)
- {
- moveToNextPlaceholder();
- int length = str.length();
- for (int i = 0; i < length; ++i) result[resultCursor++] = str.charAt(i);
- return inst;
- }
- // Liefert den finalen String.
- public char[] get()
- {
- result[resultCursor] = 0;
- return result;
- }
- private void moveToNextPlaceholder()
- {
- while (true)
- {
- char c = format.charAt(formatCursor++);
- if (c == '%') break;
- result[resultCursor++] = c;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement