2016-01-05 73 views
-1

更换单个字符我要替换用户输入的配件组装的网址,我写的代码,但它仍然无法正常工作,帮助PLZ .....用绳子在J2ME

这是怎么了我打电话它:

 newUrl = url +"?user="+ index +"&company="+ urlEncoder(BetTxt2.getString()) +"&date="+ urlEncoder(BetTxt1.getString()); 

这是该方法用于替换:

public static String urlEncoder (String s) { 
    StringBuffer sbuf = new StringBuffer(s); 
    int len = s.length(); 
    for (int i=0; i<len; i++) { 
     int ch = s.charAt(i); 
     switch (ch) { 
      case '#': 
       sbuf.append("%23"); 
       break; 
      case '+': 
       sbuf.append("%2B"); 
       break; 
      case '*': 
       sbuf.append("%2A"); 
       break; 
      default: 
       sbuf.append(ch); 
       break; 
     } 


    } 
    return sbuf.toString(); 

}

回答

0

ħ ERE是修改我的方法,改变对于字符的字符(你应该改变charNew的名称):

public String replaceChar(String text, char charReplace, String charNew) 
{ 
    String newString = ""; 
    for(int i = 0; i < text.length(); i++) 
    { 
     // System.out.println("char at " + i + " is " + text.charAt(i)); 
     if(text.charAt(i) == charReplace) 
     { 
      newString += charNew; 
     } 
     else 
     { 
      newString += text.charAt(i); 
     } 
    } 
    return newString; 
} 
0

我发现下面here的代码,你可能想看看ascii table为了更好的理解。

public static String URLencode(String s) 
{ 
    if (s!=null) { 
     StringBuffer tmp = new StringBuffer(); 
     int i=0; 
     try { 
      while (true) { 
       int b = (int)s.charAt(i++); 
       if ((b>=0x30 && b<=0x39) 
        || (b>=0x41 && b<=0x5A) 
        || (b>=0x61 && b<=0x7A)) 
       { 
        tmp.append((char)b); 
       } 
       else { 
        tmp.append("%"); 
        if (b <= 0xf) 
         tmp.append("0"); 
        tmp.append(Integer.toHexString(b)); 
       } 
      } 
     }catch (Exception e) {} 
     return tmp.toString(); 
    } 
return null; 
}