【问题标题】:Java replace character with a string in a stringJava用字符串中的字符串替换字符
【发布时间】:2013-07-09 02:03:18
【问题描述】:

你能建议我在哪里犯错吗:

  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”替换每个空格。此外,此代码不适用于两个或多个空格。

【问题讨论】:

  • 你为什么不直接使用String.replace

标签: java string replace


【解决方案1】:

你应该只使用String.replace()

简单的错误,您忘记了 else 语句的大括号,所以要么这样做

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

或者由于 k= k+1 相当于 k++ 将你的 for 更改为此

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】:

    你可以使用一个 replaceAll() 方法:

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

    【讨论】:

    • 为什么在这里使用replaceAll 而不是replace
    • 出于他的目的,它们的工作方式相同,但 replaceAll 还添加了使用正则表达式的能力。
    • 我不能在作业中使用 repalceAll 或 replace 方法。
    【解决方案3】:

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

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

    【讨论】:

      猜你喜欢
      • 2015-05-01
      • 2021-01-27
      • 2015-12-23
      • 1970-01-01
      • 2012-06-27
      • 2023-03-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多