替换空格-Java实现

6. 替换空格

题目:请实现一个函数,把字符串中的每个空格替换成“20%”。例如输入“hellow new world!”,则输出“hellow02%new02%world!”。

分析:

  1. 正常我们会想到,在基础上遍历这个字符串,遇到空格就将其和其后两位改成 ‘%20’ ,但是这会造成大量的移动

  2. 开一个辅助数组,来进行

  3. 在原字符串上,从后遍历,然后替换(推荐)

    /**
     * Class day06 ...
     *
     * @author LiJun
     * Created on 2018/12/22
     */
    // 替换空格
    
    public class day06 {
    
        /**
         * 遍历知道出这个字符串的空格数
         *
         * @param string 目的字符串
         * @return int 空格数
         */
        public int blankSum(String string) {
    
            int count = 0;
            for (int i = 0; i < string.length(); i++) {
                if (" ".equals(String.valueOf(string.charAt(i)))) {
                    count++;
                }
            }
            return count;
        }
    
        /**
         * 转换空格并输出
         * @param string
         */
        public void replaceBlank(String string) {
            // 参数有效性检查
            if (string == null || string.length() <= 0) {
                System.out.println("参数错误!");
                return;
            }
            int orignLength = string.length();
            // 加长后的字符串长度
            int newStringLength = orignLength + blankSum(string)*2;
            char[] array = new char[newStringLength];
            System.arraycopy(string.toCharArray(), 0, array,0, string.toCharArray().length);
    
            int indexOfOriginal = orignLength-1;
            int indexNew = newStringLength-1;
            while(indexOfOriginal >= 0 && indexNew > indexOfOriginal){
                if(array[indexOfOriginal] == ' '){
                    array[indexNew --] = '0';
                    array[indexNew --] = '2';
                    array[indexNew --] = '%';
                }else {
                    array[indexNew--] = array[indexOfOriginal];
                }
                indexOfOriginal--;
            }
            string = new String(array);
            for(int i = 0; i < array.length; i++){
                System.out.print(array[i]);
            }
            System.out.println();
        }
    
        public static void main(String[] args) {
            day06 day06 = new day06();
            String string = "we are people!";
            day06.replaceBlank(string);
            System.out.println(string);
            String string1 = string.replace(" ", "%20");
            // 恶补下知识
            // java中 字符串的替换函数 replaceAll 和 replaceFirst 使用到了正则表达式
            // 但是 replace 没有使用正则表达式
            System.out.println(string1);
        }
    }
    

补充:java 中传参

  1. 基础类型 传的是值
  2. 对象 传的是对象的引用
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值