Example usage for java.lang StringBuffer charAt

List of usage examples for java.lang StringBuffer charAt

Introduction

In this page you can find the example usage for java.lang StringBuffer charAt.

Prototype

@Override
public synchronized char charAt(int index) 

Source Link

Usage

From source file:TextVerifyInputFormatDate.java

public static void main(String[] args) {
    Display display = new Display();
    Shell shell = new Shell(display);
    shell.setLayout(new GridLayout());
    final Text text = new Text(shell, SWT.BORDER);
    text.setText("YYYY/MM/DD");
    ;/*from  w  w  w  . j ava  2s .  c  om*/
    final Calendar calendar = Calendar.getInstance();
    text.addListener(SWT.Verify, new Listener() {
        boolean ignore;

        public void handleEvent(Event e) {
            if (ignore)
                return;
            e.doit = false;
            StringBuffer buffer = new StringBuffer(e.text);
            char[] chars = new char[buffer.length()];
            buffer.getChars(0, chars.length, chars, 0);
            if (e.character == '\b') {
                for (int i = e.start; i < e.end; i++) {
                    switch (i) {
                    case 0: /* [Y]YYY */
                    case 1: /* Y[Y]YY */
                    case 2: /* YY[Y]Y */
                    case 3: /* YYY[Y] */ {
                        buffer.append('Y');
                        break;
                    }
                    case 5: /* [M]M */
                    case 6: /* M[M] */ {
                        buffer.append('M');
                        break;
                    }
                    case 8: /* [D]D */
                    case 9: /* D[D] */ {
                        buffer.append('D');
                        break;
                    }
                    case 4: /* YYYY[/]MM */
                    case 7: /* MM[/]DD */ {
                        buffer.append('/');
                        break;
                    }
                    default:
                        return;
                    }
                }
                text.setSelection(e.start, e.start + buffer.length());
                ignore = true;
                text.insert(buffer.toString());
                ignore = false;
                text.setSelection(e.start, e.start);
                return;
            }

            int start = e.start;
            if (start > 9)
                return;
            int index = 0;
            for (int i = 0; i < chars.length; i++) {
                if (start + index == 4 || start + index == 7) {
                    if (chars[i] == '/') {
                        index++;
                        continue;
                    }
                    buffer.insert(index++, '/');
                }
                if (chars[i] < '0' || '9' < chars[i])
                    return;
                if (start + index == 5 && '1' < chars[i])
                    return; /* [M]M */
                if (start + index == 8 && '3' < chars[i])
                    return; /* [D]D */
                index++;
            }
            String newText = buffer.toString();
            int length = newText.length();
            StringBuffer date = new StringBuffer(text.getText());
            date.replace(e.start, e.start + length, newText);
            calendar.set(Calendar.YEAR, 1901);
            calendar.set(Calendar.MONTH, Calendar.JANUARY);
            calendar.set(Calendar.DATE, 1);
            String yyyy = date.substring(0, 4);
            if (yyyy.indexOf('Y') == -1) {
                int year = Integer.parseInt(yyyy);
                calendar.set(Calendar.YEAR, year);
            }
            String mm = date.substring(5, 7);
            if (mm.indexOf('M') == -1) {
                int month = Integer.parseInt(mm) - 1;
                int maxMonth = calendar.getActualMaximum(Calendar.MONTH);
                if (0 > month || month > maxMonth)
                    return;
                calendar.set(Calendar.MONTH, month);
            }
            String dd = date.substring(8, 10);
            if (dd.indexOf('D') == -1) {
                int day = Integer.parseInt(dd);
                int maxDay = calendar.getActualMaximum(Calendar.DATE);
                if (1 > day || day > maxDay)
                    return;
                calendar.set(Calendar.DATE, day);
            } else {
                if (calendar.get(Calendar.MONTH) == Calendar.FEBRUARY) {
                    char firstChar = date.charAt(8);
                    if (firstChar != 'D' && '2' < firstChar)
                        return;
                }
            }
            text.setSelection(e.start, e.start + length);
            ignore = true;
            text.insert(newText);
            ignore = false;
        }
    });
    shell.pack();
    shell.open();
    while (!shell.isDisposed()) {
        if (!display.readAndDispatch())
            display.sleep();
    }
    display.dispose();
}

From source file:Main.java

private static StringBuffer swap(StringBuffer s, int a, int b) {
    char t = s.charAt(a);
    s.setCharAt(a, s.charAt(b));//from   ww w  . j a v  a  2  s.  c o  m
    s.setCharAt(b, t);
    return s;
}

From source file:Main.java

public static String trimTail(StringBuffer sb, char tail) {
    if (sb.length() > 0 && sb.charAt(sb.length() - 1) == tail)
        sb.deleteCharAt(sb.length() - 1);
    return sb.toString();
}

From source file:Main.java

public static String filterInvalid(String xml) {
    StringBuffer sb = new StringBuffer(xml);
    for (int i = 0; i < sb.length(); i++) {
        int c = sb.charAt(i);
        if (c < 0x20 && c != 0x09/*\t*/ && c != 0x0A/*\n*/ && c != 0x0D/*\r*/) {
            sb.delete(i, i + 1);//  w ww . j av a 2 s  . c o m
        }
    }
    return sb.toString();
}

From source file:Main.java

/**
 * Trims leading and trailing spaces from a string buffer
 * @param buffer the buffer to be edited 
 *//* www.j  a v  a  2s  .  co  m*/
public static void trim(StringBuffer buffer) {
    int i = 0;
    while (i < buffer.length() && isSpace(buffer.charAt(i)))
        i++;
    buffer.delete(0, i);
    int j = buffer.length() - 1;
    while (j >= 0 && isSpace(buffer.charAt(j)))
        j--;
    buffer.setLength(j + 1);
}

From source file:Main.java

/**
 * Replaces Windows 1252 characters with their Unicode equivalents.
 * @param buffer the buffer to be edited 
 *//* w w w  .j  av  a 2 s.  c o m*/
public static void fixWin1252(StringBuffer buffer) {
    for (int i = 0; i < buffer.length(); i++) {
        char ch = buffer.charAt(i);
        if ('\u0080' <= ch && ch <= '\u009F')
            buffer.setCharAt(i, win1252_80_9f[ch - '\u0080']);
    }
}

From source file:Main.java

private static String getNumericPrefix(String string) {
    StringBuffer numeric = new StringBuffer();

    if (string != null) {
        string = string.trim();//from   w w  w.ja  v  a2s. co m

        if (string.length() > 0) {

            StringBuffer buffer = new StringBuffer(string);
            char first = buffer.charAt(0);

            if (Character.isDigit(first)) {
                numeric.append(first);

                for (int i = 1; i < buffer.length(); i++) {
                    Character next = buffer.charAt(i);

                    if (Character.isDigit(next)) {
                        numeric.append(next);

                        // skip commas within numbers
                    } else if (next.equals(',')) {
                        continue;

                    } else {
                        break;
                    }
                }
            }
        }
    }

    return numeric.length() == 0 ? null : numeric.toString();
}

From source file:Main.java

/**
 * Convert umlaute to entities//from  w w  w  . j  a  va 2 s.co  m
 */
public static String encode(String value) {
    StringBuffer buffer = new StringBuffer(value);
    for (int i = 0; i < buffer.length(); i++) {
        if (buffer.charAt(i) > 127) {
            buffer.replace(i, i + 1, "__" + ((int) buffer.charAt(i)) + ";");
        }
    }
    return buffer.toString();
}

From source file:Main.java

private static String join(int length) {
    StringBuffer sb = new StringBuffer(1024);
    for (int i = 0; i < length; i++) {
        sb.append("?,");
    }//from  w  ww .  jav  a  2 s  .  com
    if (sb.charAt(sb.length() - 1) == ',') {
        sb.deleteCharAt(sb.length() - 1);
    }
    return sb.toString();
}

From source file:Main.java

/**
 * Replaces HTML entities in a string buffer
 * @param buffer the string buffer/*from   w w w.  j av a 2 s.com*/
 */
public static void replaceEntities(StringBuffer buffer) {
    int i = 0;
    while (i < buffer.length()) {
        if (buffer.charAt(i) == '&') {
            int j = i + 1;
            while (j < buffer.length() && buffer.charAt(j) != ';')
                j++;
            if (j < buffer.length()) {
                char[] chars = new char[j - i - 1];
                buffer.getChars(i + 1, j, chars, 0);
                Character repl = (Character) replacements.get(new String(chars));
                if (repl != null) {
                    buffer.delete(i, j);
                    buffer.setCharAt(i, repl.charValue());
                } else
                    i = j;
            } else
                i = j;
        }
        i++;
    }
}