2009-12-20 67 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]); 
}