2009-12-20 60 views
1

J2ME字符串標記: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內容被拉入線程。 任何人都可以告訴我如何在此代碼中添加一個簡單的計數器來計算打印結果的次數,即有多少令牌?因爲我在掙扎。

非常感謝

+2

是不是隻是result.length?我錯過了什麼嗎? – 2009-12-20 16:30:38

回答

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]); 
}