Счетчик сплиттеров J2ME - PullRequest
       11

Счетчик сплиттеров J2ME

1 голос
/ 20 декабря 2009

J2ME Строковый токенизатор:

public String[] split(String toSplit, char delim, boolean ignoreEmpty) {
    StringBuffer buffer = new StringBuffer();
    Stack stringStack = new Stack();
    for (int i = 0; i < toSplit.length(); i++) {
        if (toSplit.charAt(i) != delim) {

            buffer.append((char) toSplit.charAt(i));
        } else {
            if (buffer.toString().trim().length() == 0 && ignoreEmpty) {
            } else {
                stringStack.addElement(buffer.toString());
            }
            buffer = new StringBuffer();
        }
    }

    if (buffer.length() != 0) {
        stringStack.addElement(buffer.toString());
    }


    String[] split = new String[stringStack.size()];
    for (int i = 0; i < split.length; i++) {
        split[split.length - 1 - i] = (String) stringStack.pop();
    }

    stringStack = null;
    buffer = null;
    return split;
}

Метод, используемый для его вызова:

        String toSplit = myThreadObject.GetInfo();
        String del = DelimiterValue.getString();
        char delimiter = del.charAt(0);
        String[] result = split(toSplit, delimiter, false);

        if (result != null) {
            for (int i = 0; i < result.length; i++) {
                System.out.println("The elements are: " + result[i]);
            }
        } else {
            System.out.println("The result is empty");
        }

Это пример того, как разделить строку в J2ME, это на самом деле разделение HTML-контента с веб-сайта, помещенного в поток. Может кто-нибудь сказать мне, как я добавляю в этот код простой счетчик для подсчета количества раз, когда результат распечатывается, то есть сколько существует токенов? Потому что я борюсь.

Большое спасибо

1 Ответ

3 голосов
/ 20 декабря 2009

Не нужно добавлять счетчик, так как массив имеет открытое свойство .length, которое предоставляет вам счетчик. Я добавил одну строку в ваш код (и комментарий перед ним). Я также удалил ваш чек на result != null, потому что ваш метод split() никогда не вернет null. Возвращает массив нулевой длины, если совпадений нет.

String toSplit = myThreadObject.GetInfo();
String del = DelimiterValue.getString();
char delimiter = del.charAt(0);
String[] result = split(toSplit, delimiter, false);

// add the line below:
System.out.println("There are " + result.length + " results");
for (int i = 0; i < result.length; i++) {
    System.out.println("The elements are: " + result[i]);
}
...