2012-05-16 3 views
1

Я получаю ошибку cannot find symbol в netbeans, используя нижеследующий код для замены строки на строку.replace string string в j2me

public String urlEncode(String msg) { 

     if (msg != null) { 
      msg=msg.replaceAll(" ","%20"); 
     } 
     return msg; 
    } 

Нужна помощь!

ответ

3

использовать следующий код

private String replace(String needle, String replacement, String haystack) { 
    String result = ""; 
    int index = haystack.indexOf(needle); 
    if(index==0) { 
     result = replacement+haystack.substring(needle.length()); 
     return replace(needle, replacement, result); 
    }else if(index>0) { 
     result = haystack.substring(0,index)+ replacement +haystack.substring(index+needle.length()); 
     return replace(needle, replacement, result); 
    }else { 
     return haystack; 
    } 
} 
+1

Вы должны использовать StringBuffer, а не конкатенацию строки со знаками плюса. Плюс знаки делают ужасные вещи в память. – garbagecollector

+0

@DumpHole: StringBuilder будет лучшим выбором, поскольку синхронизация не требуется. Кроме того, компилятор преобразует зависящую от выполнения конкатенацию в код, который использует StringBuilder. Это может быть не всегда оптимальным, но я думаю, что конкатенация отлично работает в этом случае. – Jeremy

+1

@JeremyHeiler: StringBuilder не поддерживается в J2ME. – garbagecollector

0

Нужно ли вам использовать собственный метод обработки кодировки URL? Просто используйте URLEncoder.encode (строка s, строка ENC)

@param s String to be translated. 
    @param enc The name of a supported 
    @return the translated String. 
0

replaceAll был введен в Java 1.4, и я думаю, что J2ME ограничено 1.3. Вы должны компилировать с более поздним JDK, поэтому вы получаете ошибку символа во время выполнения.

URLEncoder.encode (String s) может быть вашим лучшим выбором. К сожалению, URLEncoder.encode (String s, String enc), как было предложено Xeon, также является вызовом API JDK1.4.

+0

он показывает 'пакет не существует'. Теперь что делать .. ?? –

2

Попробуйте адаптированную версию URLEncoder для JavaMe, опубликованную по адресу code.google.com по проекту JibLib мобильный клиент.

7

Я создал следующий метод для замены String на другой String.

private String replace(String str, String pattern, String replace) 
{ 
    int s = 0; 
    int e = 0; 
    StringBuffer result = new StringBuffer(); 

    while ((e = str.indexOf(pattern, s)) >= 0) 
    { 
     result.append(str.substring(s, e)); 
     result.append(replace); 
     s = e+pattern.length(); 
    } 
    result.append(str.substring(s)); 
    return result.toString(); 
}