Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java用字符串中的字符串替换字符_Java_String_Replace - Fatal编程技术网

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

Java用字符串中的字符串替换字符,java,string,replace,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; cha

你能告诉我哪里出错了吗

  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;}

}
publicstaticchar[]replaceSpaces(字符串){
int length=string.length();
int spaceCount=0;

对于(inti=0;i为什么要编写自己的方法

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

为什么要编写自己的方法

String yourString = "my test string".replace(" ", "%20");
您可以使用replaceAll()方法:

         String newString = string.replaceAll(" ","%20");
您可以使用replaceAll()方法:

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

您应该只使用
String.replace()

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

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++;
}
for(int i=0;i

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

您只需使用
String.replace()

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

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++;
}
for(int i=0;i

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

为什么不直接使用
String.replace
?为什么不直接使用
String.replace
?为什么在这里使用
replaceAll
而不是
replace
呢?出于他的目的,它们的工作原理相同,但replaceAll还增加了使用正则表达式的功能。我不能使用repalceAll或replace方法作为赋值的一部分。为什么在这里使用
replaceAll
而不是
replace
?出于他的目的,它们的工作原理相同,但replaceAll还增加了使用正则表达式的能力。我不能将repalcell或replace方法作为赋值的一部分。