Java用字符串中的字符串替换字符

时间:2013-07-10 23:17:11

标签: java string replace

你能否说一下我犯错的地方:

  public static char[] replaceSpaces(String string){
    int length = string.length();
    int spaceCount = 0;
    for(int i =0; i<=length-1;i++){if(string.charAt(i)==' '){spaceCount++;}}

    int index = length + spaceCount*2;
    char[] charString = new char[index];
    int k=0;
    for(int i=0;i<index-1;i++){

        if(string.charAt(k) == ' '){
            charString[i] = '%';
            charString[i+1] = '2';
            charString[i+2] = '0';
            i = i +2;
            k=k+1;}
        else
            charString[i] = string.charAt(k);
            k++;
    }
    return charString;}

}

输出 wa%20cf ,而我想要“wa%20dcf”作为输出。基本上我用“%20”替换每个空格。此代码也不适用于两个或多个空格。

3 个答案:

答案 0 :(得分:5)

为什么要编写自己的方法?

String yourString = "my test string".replace(" ", "%20");

答案 1 :(得分:1)

您应该使用String.replace()

简单的错误,你忘记了你的其他声明的大括号,所以要么这样做

else
{
    charString[i] = string.charAt(k);
    k++;
}

或由于k= k+1相当于k++,因此将此更改为

for(int i = 0; i < index; i++) // also change your index 
{
    if(string.charAt(k) == ' ')
    {
        charString[i] = '%';
        charString[i+1] = '2';
        charString[i+2] = '0';
        i = i +2;
    }
    else
    { // these braces are not needed now but inculde them to make my 
      // point above valid
        charString[i] = string.charAt(k);
    }
    //increment every time
    k++;
}

这将解决您遇到的两个问题

答案 2 :(得分:0)

您可以使用replaceAll()方法:

         String newString = string.replaceAll(" ","%20");