簡體   English   中英

如何在黑莓中替換多個字符

[英]How do I replace more than 1 character in blackberry

我知道如何用字符串中的另一個字符替換某個字符:

System.out.println(replaceAll(“你在哪里??”,“?”,“”))

public static String replaceAll(String front, String pattern, String back){

    if (front == null)
        return "";

    StringBuffer sb = new StringBuffer(); //A StringBuffer is created
    int idx = -1;
    int patIdx = 0;

    while ((idx = front.indexOf(pattern, patIdx)) != -1)
    {
        sb.append(front.substring(patIdx, idx));
        sb.append(back);
        patIdx = idx + pattern.length();
    }

    sb.append(front.substring(patIdx));
    return sb.toString();
}      

這段代碼會取代所有? 空的空間,將打印出來(“你在哪里”)

現在我想知道的是如何替換超過1個字符。 在Java中我可以使用簡單的正則表達式,但如果在黑莓中我寫了類似的東西:

System.out.println(replaceAll("Henry!! Where are you??", "!?", ""))

然后黑莓不接。 那么我該如何克服黑莓的這種局限呢?

沒有任何方法可以做到你想要的。 但我可以建議你制作一個array of string of the pattern which you want to replace 循環遍歷字符串數組獲取字符串的位置並將其傳遞給您的字符串

public static String replaceAll(String front, String pattern, String back) 希望這會幫助你 。

如果要替換String pattern中使用的String front任何字符,可以使用toCharArray() ,遍歷模式中的所有字符,檢查哪個是第一個要替換的(最近的)並替換它。 我的意思是這樣的

public static String replaceAll(String front, String pattern, String back) {

    if (front == null)
        return "";

    StringBuffer sb = new StringBuffer(); // A StringBuffer is created
    int idx = -1;
    int patIdx = 0;


    boolean end = true;
    int tmp = -1;

    do {
        end = true;
        for (char c : pattern.toCharArray()) {
            //System.out.println("searching for->"+c+" from patIdx="+patIdx+" idx="+idx);
            if ((tmp = front.indexOf(c, patIdx)) != -1) {
                //System.out.println("FOUND->"+c+" from patIdx="+patIdx+" idx="+idx+" tmp="+tmp);
                if (idx == -1 || idx == patIdx-1 || (idx > patIdx && tmp < idx)){
                    end = false;
                    idx = tmp;
                    //System.out.println("setting replacement to ->"+c+" patIdx="+patIdx+" idx="+idx);
                }
            }
        }
        if (!end && idx != -1) {
            //System.out.println("replacing patIdx="+patIdx+" idx="+idx);
            sb.append(front.substring(patIdx, idx));
            sb.append(back);
            patIdx = idx+1;
        }
        //System.out.println("----");
    }while(!end);

    sb.append(front.substring(patIdx));
    return sb.toString();
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM