替换空格

来源:互联网 发布:macbook 下载软件网站 编辑:程序博客网 时间:2024/06/05 16:31

题目描述

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

源码实现

package com.nuike;public class Solution {    public static void main(String[] args) {        Solution solution = new Solution();        String string = "We are happy!";        StringBuffer sb = new StringBuffer(string);        System.out.println("将空格替换为'%20'之后的字符串为:" + solution.replaceSpace(sb));    }    /**     * 自己的解法,一点也不推荐     *      * @param str     * @return     *///  public String replaceSpace(StringBuffer str) {//      //      for(int i = 0; i < str.length(); i++) {//          char c = str.charAt(i);//          if(c == ' ') str.replace(i, i + 1, "%20");//      }//      //      return str.toString();//      //    }     /**     * 推荐解法 2:牛人都用正则     *      * @param str     * @return     */    public String replaceSpace(StringBuffer str) {        // \s——正则表达式元字符        // \——在正则表达式中像一般字符一样使用元字符(\s)        return str.toString().replaceAll("\\s","%20");    }    /**     * 推荐解法 1:官方解法     *      * 剑指offer书籍上的思路,Java版本试实现     * 将原字符串转换为数组,在数组中完成空格替换     *      * @param str     * @return     *///    public String replaceSpace(StringBuffer str) {//      ////1.计算空格的多少//        int countOfGap = 0;//        for(int i = 0; i < str.length(); i++){//            if(str.charAt(i) == ' ') countOfGap++;//        } //        //        //新串的长度//        int newlength = countOfGap * 2 + str.length();//        ////2.定义两个指针,一个指向新串的子串前,一个指向新串的字串后,从右向左,生成新串//        int end = newlength - 1;//        //        //规定一个长度为newlength的字符串数组//        char[] result = new char[newlength];//        //        //从后往前遍历原字符串,将空格替换为%20//        for(int i = str.length() - 1; i >= 0; i--){//            //等于' ',我们分别加上字符%20//            if(str.charAt(i) == ' ') {//                result[end--] = '0';//                result[end--] = '2';//                result[end--] = '%';//            } else {//                //不等于' ',就将原来字符串中字符copy到新的字符串数组中//                result[end--] = str.charAt(i);//            }//        }//        //        //将字符串数组转换为字符串返回//        return String.valueOf(result);//    }}
0 0
原创粉丝点击