2009-12-20 1 views
1

J2ME Строка Tokenizer:J2ME Строка Splitter Счетчик

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-контент с веб-сайта, втянутого в поток. Может ли кто-нибудь сказать мне, как я добавляю простой счетчик в этот код, чтобы подсчитать количество раз, когда результат распечатывается, т. Е. Сколько же токенов есть? Потому что я борюсь.

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

+2

Не правда ли результат.length? Я что-то упускаю? –

ответ

3

Нет необходимости добавлять счетчик как массив имеет общественное .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]); 
}