java实现替换字符串之中的空格

tn_java 2016-11-28 10:59:40
写了一份代码,但是如果字符串末端是空格的话,第一个空格就不能替换掉
public class ReplaceBlankSpace {
public static void main(String[] args) {
String str="we are happy";
char []ch=str.toCharArray();
replace(ch,"%20".toCharArray());
}
public static void replace(char[] oldchar,char[] replacement){
if(oldchar==null||oldchar.length<=0){
return;
}
int numOfSpace=0;//空格数
for(int x=0;x<oldchar.length-1;x++){
if(oldchar[x]==' '){
numOfSpace++;
}
}
if(numOfSpace==0){
return;
}
int newcharlength=oldchar.length+(replacement.length-1)*numOfSpace;
char []newchar=new char[newcharlength];
System.arraycopy(oldchar, 0, newchar, 0, oldchar.length);
int pOld=oldchar.length-1;
int pNew=newchar.length-1;
System.out.print("未替换空格时的字符串:");
for(char old:newchar){
System.out.print(old);
}
System.out.println();
while(pOld>=0 && pNew>pOld){
if(oldchar[pOld]==' '){
newchar[pNew--]='0';
newchar[pNew--]='2';
newchar[pNew--]='%';
}else{
newchar[pNew--]=oldchar[pOld];
}
pOld--;
}
System.out.print("替换空格之后的字符串:");
for(char c:newchar){
System.out.print(c);
}
}
}
...全文
748 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
引用 10 楼 tn_java 的回复:
引用 8 楼 qnmdcsdn 的回复:
[quote=引用 7 楼 tn_java 的回复:] [quote=引用 5 楼 qnmdcsdn 的回复:] 恩,string有replace方法
这个我是知道的,只是想练习下算法题,然后这组代码有漏洞,末端是空格的话,就会出问题,自己解决不了,才来询问大神
第12行,减1去掉[/quote]大神,问个问题。二分查找的时候,需要判断数组是否为null或者数组长度为0么
public static int search(int []temp,int num){
		if(temp==null||temp.length==0){		//如果数组为空或者数组长度等于0,返回-2
			return -2;
		}
		int min=0;
		int max=temp.length-1;
		int mid;
		while(min<=max){
			mid=(min+max)/2;
			if(num>temp[mid]){
				min=mid+1;
			}else if(num<temp[mid]){
				max=mid-1;
			}else if(num==temp[mid]){
				return mid;		//在数组中查找到数,返回索引
			}
		}
		return -1;		//如果数组之中没有要查找的数,返回-1
	}
[/quote] 判断,为空的时候下边没有计算的意义,还可以避免空指针
爱睡觉的阿狸 2016-11-29
  • 打赏
  • 举报
回复
仅供参考:
System.out.println(" e a   c v z ".replace(" ", ""));
tn_java 2016-11-29
  • 打赏
  • 举报
回复
引用 8 楼 qnmdcsdn 的回复:
引用 7 楼 tn_java 的回复:
[quote=引用 5 楼 qnmdcsdn 的回复:] 恩,string有replace方法
这个我是知道的,只是想练习下算法题,然后这组代码有漏洞,末端是空格的话,就会出问题,自己解决不了,才来询问大神
第12行,减1去掉[/quote]666,原来是遍历的时候把最后一个元素搞掉了
  • 打赏
  • 举报
回复
引用 7 楼 tn_java 的回复:
引用 5 楼 qnmdcsdn 的回复:
恩,string有replace方法
这个我是知道的,只是想练习下算法题,然后这组代码有漏洞,末端是空格的话,就会出问题,自己解决不了,才来询问大神
第12行,减1去掉
tn_java 2016-11-29
  • 打赏
  • 举报
回复
引用 5 楼 qnmdcsdn 的回复:
恩,string有replace方法
这个我是知道的,只是想练习下算法题,然后这组代码有漏洞,末端是空格的话,就会出问题,自己解决不了,才来询问大神
tn_java 2016-11-29
  • 打赏
  • 举报
回复
引用 4 楼 m2200 的回复:
[quote=引用 2 楼 m2200 的回复:] 仅供参考:
System.out.println(" e a   c v z ".replace(" ", ""));
改一下:
System.out.println(" we  are happy ".replace(" ", "%20"));
[/quote]兄弟,这个方法我肯定知道啊,我只是在将剑指offer上的题通过Java实现,以达到练习算法的目的啊。
tn_java 2016-11-29
  • 打赏
  • 举报
回复
引用 8 楼 qnmdcsdn 的回复:
引用 7 楼 tn_java 的回复:
[quote=引用 5 楼 qnmdcsdn 的回复:] 恩,string有replace方法
这个我是知道的,只是想练习下算法题,然后这组代码有漏洞,末端是空格的话,就会出问题,自己解决不了,才来询问大神
第12行,减1去掉[/quote]大神,问个问题。二分查找的时候,需要判断数组是否为null或者数组长度为0么
public static int search(int []temp,int num){
		if(temp==null||temp.length==0){		//如果数组为空或者数组长度等于0,返回-2
			return -2;
		}
		int min=0;
		int max=temp.length-1;
		int mid;
		while(min<=max){
			mid=(min+max)/2;
			if(num>temp[mid]){
				min=mid+1;
			}else if(num<temp[mid]){
				max=mid-1;
			}else if(num==temp[mid]){
				return mid;		//在数组中查找到数,返回索引
			}
		}
		return -1;		//如果数组之中没有要查找的数,返回-1
	}
  • 打赏
  • 举报
回复
恩,string有replace方法
爱睡觉的阿狸 2016-11-29
  • 打赏
  • 举报
回复
引用 2 楼 m2200 的回复:
仅供参考:
System.out.println(" e a   c v z ".replace(" ", ""));
改一下:
System.out.println(" we  are happy ".replace(" ", "%20"));
DarlieDouble 2016-11-29
  • 打赏
  • 举报
回复
删除空格的话 String类型不是有个split方法吗? String str="we are Happy"; string[] array=str.split(" "); StringBuffer newStr=new StringBuffer(); for(int i=0;i<array.length;i++) { newStr.append(array[i]); } System.out.print(newStr.ToString());
tn_java 2016-11-28
  • 打赏
  • 举报
回复
不知道应该怎么修改,求大神指点

62,621

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧