你能否说一下我犯错的地方:
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”替换每个空格。此代码也不适用于两个或多个空格。
答案 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");