1

私が間違いを犯している場所を教えてください:

  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を出力しますが、II は「wa%20dcf」を出力として必要とします。基本的に、すべてのスペースを「%20」に置き換えています。また、このコードは 2 つ以上のスペースでは機能しません。

4

3 に答える 3

5

なぜ独自のメソッドを書きたいのですか?

String yourString = "my test string".replace(" ", "%20");
于 2013-07-10T23:19:17.413 に答える
1

あなたはただ使うべきですString.replace()

単純な間違いです。else ステートメントの括弧を忘れたので、次のいずれかを実行してください

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

またはそれ以降は、 for をこれに変更すること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++;
}

これにより、発生している両方の問題が修正されます

于 2013-07-10T23:41:55.807 に答える
0

使用できる replaceAll() メソッドがあります。

         String newString = string.replaceAll(" ","%20");
于 2013-07-10T23:26:17.503 に答える