字符串一:替换空格()

/**
 * 题目:替换空格()
 * 描述:请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
 * 解决方案: 方法一:   在java中,String有一个方法replaceAll(); 传入regex(匹配的正则)和replacecomment(要替换的字符)。
 *         方法二:   利用StringBuffer,遍历输入的字符串,是空格就往stringBuffer添加“%20”,不是空格就添加原来的字符。 利用indexof()和subSequence()
 *         方法三:   思路:
 *     步骤:①遍历原来的str,有空格就在原来的基础上添加两个空格
 *      ②定义两个指针 ,oldIndex是原来字符串的,newIndex是新的字符串的指针,都从最后一个元素开始
 *      ③进行遍历新的字符串,判断原来的字符串内容是否是空格。
 * */

public class One {

    public static StringBuffer replaceSpace(StringBuffer str) {
        int length = str.length();
        for(int i=0;i<length;i++) {         //①遍历原来的str,有空格就在原来的基础上添加两个空格
            if(str.charAt(i) == ' ') {
                str.append("  ");
            }
        }
        int oldIndex = length-1;
        int newIndex = str.length() -1;        //②定义两个指针 ,oldIndex是原来字符串的,newIndex是新的字符串的指针,都从最后一个元素开始
        while( newIndex >oldIndex  && newIndex > 0) {    
            if(str.charAt(oldIndex) == ' ') {        //③进行遍历新的字符串,判断原来的字符串内容是否是空格。
                str.setCharAt(newIndex--,'0');
                str.setCharAt(newIndex--,'2');
                str.setCharAt(newIndex--,'%');
            }else {
                str.setCharAt(newIndex--, str.charAt(oldIndex));
            }
            oldIndex--;
        }
        return str;
    }
    
    public static void main(String[] args) {
        StringBuffer input = new StringBuffer();
        input.append("we are faimly");
        System.out.println(replaceSpace(input));
    }
}

 

posted @ 2018-11-16 15:02  弄潮儿儿  阅读(189)  评论(0编辑  收藏  举报