黑莓方法替换字符串?

时间:2010-02-04 18:19:32

标签: java eclipse blackberry java-me

所以,再次,由于黑莓的api限制,我有两个问题:

  1. 我从IOUtilities.streamToBytes(httpInput)回来的回复; call包含“& 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 “>” 中AND“< / string>”?

  3. 再次感谢大家的帮助。非常感激。我开始了解到,在黑莓环境中进行开发有时会有点单调乏味,因为某些java类(可以使编码更容易)无法使用。

2 个答案:

答案 0 :(得分:5)

您遇到的情况是被迫使用基于早期J2SE版本的J2ME配置文件。

我有一个替换实用程序方法,用于我在定位早期平台时编写的字符串,这可能对您有用。但要注意你真正想要的是一个XML解析器;只更换字符串只有在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解析器包。

答案 1 :(得分:2)