2010-02-04 60 views
2

所以,再次,由於黑莓的API限制,我有2個問題:黑莓手機取代字符串的方法?

  1. ,我回來從我IOUtilities.streamToBytes(httpInput)的響應;呼叫包含「& lt;」字符。那麼我可以用什麼黑莓類/方法來取代我的「& lt;」與「<」? String類中只有1個replace()方法,該方法只能用另一個字符替換1個字符。再次,因爲這是一個黑莓項目,我沒有訪問任何以上的Java 1.4

  2. 響應,我也從我的IOUtilities.streamToBytes(httpInput)回來;調用從通常的肥皂響應開始「<?xml version =」1.0「encoding =」utf-8「?> < string xmlns =」http://www.mydomain.com「>」。任何黑莓類/方法,我可以用來告訴程序只返回「<?xml version =」1.0「encoding =」utf-8「之間的所有內容?> < string xmlns =」http://www.mydomain.com 「>」和「</string >」?

再次感謝大家的幫助。非常感激。我開始意識到在黑莓環境中開發有時會有點乏味,因爲某些Java類(可以使編碼更容易)不能使用。

+0

對於一些缺少字符串函數提供的功能,請告訴我們的J2ME版本你的黑莓。這些在設置/選項/關於。例如,我的是:CLDC 1.1與MIDP 2.0。 – 2010-02-04 19:10:19

+0

我使用日食伽利略和使用黑莓JRE 5.0.0。順便說一句,Eclipse將「默認合規性級別」設置爲1.4。如果我將它設置爲1.5和1.6,我會在應用程序的一開始就會發現「NoClassDefinition found」錯誤。 – sexitrainer 2010-02-04 19:31:39

+0

這並沒有告訴我們您所定位的J2ME版本(配置和配置文件)。配置和配置文件的組合決定了你可以使用的API;例如,Personal Profile 1.0基於Java 1.2,而Personal Profile 1.1則基於Java 1.4。這意味着PP 1.1是一個精簡版的J2SE 1.4 - 你會驚訝於缺少多少東西。 – 2010-02-04 23:24:09

回答

5

您遇到的問題是基於早期的J2SE版本被迫使用J2ME配置文件。

我有一個替換實用程序方法,用於定位早期平臺時編寫的字符串,這可能對您有用。但請注意,你真正想要的是一個XML解析器;只是替換字符串只會在非常簡單的時才起作用。

static public String replace(String val, String fnd, String rpl, boolean igncas) { 
    int         fl=(fnd==null ? 0 : fnd.length()); 

    if(fl>0 && val.length()>=fl) { 
     StringBuffer     sb=null;        // string buffer 
     int        xp=0;         // index of previous fnd 

     for(int xa=0,mi=(val.length()-fl); xa<=mi; xa++) { 
      if(val.regionMatches(igncas,xa,fnd,0,fl)) { 
       if(xa>xp) { sb=append(sb,val.substring(xp,xa)); }    // substring uses private construct which does not dup char[] 
       sb=append(sb,rpl); 
       xp=(xa+fl); 
       xa=(xp-1);              // -1 to account for loop xa++; 
       } 
      } 

     if(sb!=null) { 
      if(xp<val.length()) { sb.append(val.substring(xp,val.length())); } // substring uses private construct which does not dup char[] 
      return sb.toString(); 
      } 
     } 
    return val; 
    } 

static private StringBuffer append(StringBuffer sb, String txt) { 
    if(sb==null) { sb=new StringBuffer(txt.length()); } 
    sb.append(txt); 
    return sb; 
    } 

至於你的第二部分的問題,則需要使用XML解析器來提取所需的信息。否則,你將進行一些(可能是kludgy)手動工作。

快速瀏覽CLDC表明它可能基於Java 1.1(唉!)。 DigiLife有一個PDF document,它有更多關於J2ME的良好信息。

瞭解哪個配置(CDC或CLDC)以及您所指向的配置文件(MIDP或PP)對了解哪些API可用至關重要。並且請注意,即使您在J2SE 1.4上使用基於的文件,它可能會丟失各種類和方法,包括各種XML解析包。因此,您可能需要自己從第三方提供替代品(或自己寫)。

編輯:我注意到BlackBerry V5 doco包括XML解析器包。