• 替换空格


    题目描述
    请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。

    方法一
    传过来的参数是StringBuffer,我们可以使用StringBuffer类的replace和indexOf方法,但是StringBuffer无法判别字符串中是否存在某个字符子串,所以可以转化为String类型,并使用contains进行判别

    	public String replaceSpace(StringBuffer str) {
    		String result = str.toString();
    		if(result.contains(" ")){
    			while(str.indexOf(" ") != str.lastIndexOf(" ")){
    				int index = str.indexOf(" ");
    				str.replace(index,index+1,"%20");
    			}
    			int index = str.indexOf(" ");
    			str.replace(index,index+1,"%20");
    			result = str.toString();
    			return result;
    
    		}else{
    			return result;
    		}
    	}
    

    方法二
    优化while循环的判断,这里借助indexOf()方法在未找到匹配字符串时返回-1

    	public String replaceSpace_2(StringBuffer str) {
    		int index = str.indexOf(" ");
    		while(index != -1) {
    			str.replace(index, index + 1, "%20");
    			index = str.indexOf(" ");
    		}
    		String result = str.toString();
    		return result;
    	}
    

    方法三
    不使用replace(),而采用字符替换,这里声明一个新的数组来存放替换后字符串中各字符。

    	public String replaceSpace_3(StringBuffer str) {
    		int len = str.length();
    		int space_len = 0;
    		for (int i = 0; i < len; i++) {
    			if(str.charAt(i) == ' ') {
    				space_len++;
    			}
    		}
    		int arr_len = len + 2 * space_len;  //(len - space_len) + 3 * space_len
    		char[] str_arr = new char[arr_len];
    		int index = arr_len - 1;
    		while(len > 0) {
    			if(str.charAt(len - 1) != ' ') {
    				str_arr[index--] = str.charAt(len - 1);
    			}
    			else {
    				str_arr[index--] = '0';
    				str_arr[index--] = '2';
    				str_arr[index--] = '%';
    			}
    			len--;
    		}
    		
    		return String.valueOf(str_arr);
    	}
    
  • 相关阅读:
    linq to sql的性能和reader相比只是差一点点吗
    Win11删除右键菜单open in windows Terminal
    jdk1.8
    mvcc read view
    javascript 跨域双向通信方案,通过postMessage和window.name实现
    [原创]如何加载动态库、获取方法委托、卸载动态库
    awseks创建与使用
    aiops 调研
    consul调研
    机器学习调研
  • 原文地址:https://www.cnblogs.com/lishanlei/p/10707766.html
Copyright © 2020-2023  润新知