java去掉字符串左侧(前缀)空格

列出8种去除字符串前缀“空格”的方法如下

需要导入junit-4..11和hamcrest-core-1.3 jar

/**
 * 目标:去除string类型的前缀空格
 * 示例:
 * string="   select * from zevin"  ==>   string="select * from zevin"
 */
public class Test {

    /**
     * 方法一:trim()
     * 逻辑:略
     * 最优时间:7000左右
     */
    @Test
    public void test1(){

        String sql="                                                                                                    select   * from zevin";
//        String sql="  select   * from zevin";

        long l = System.nanoTime();
//————————————————————————————————————————————————————
        sql=sql.trim();
//————————————————————————————————————————————————————
        System.out.println(System.nanoTime()-l);

        System.out.println(sql);
    }

    /**
     * 方法二:计数器+String.codePointAt()+String.substring()
     * 逻辑:1.使用计数器,对前缀"空格"进行计数统计
     *      2.判断是否为"空格"则采用 String.codePointAt()
     *      3.最后截取下标的后面字符串
     * 最优时间:12000左右
     */
    @Test
    public void test2(){

        String sql="                                                                                                    select   * from zevin";
//        String sql="  select   * from zevin";

        long l = System.nanoTime();
//————————————————————————————————————————————————————
        //while形式
        int i=0;
        while (sql.codePointAt(i)==32){
            i++;
        }
        sql=sql.substring(i,sql.length());

/*        //for形式
        for (int i = 0; i < sql.length(); i++) {
            if(sql.codePointAt(i)!=32){
                sql=sql.substring(i,sql.length());
                break;
            }
        }*/
//————————————————————————————————————————————————————
        System.out.println(System.nanoTime()-l);

        System.out.println(sql);
    }

    /**
     * 方法三:substring()逐步移除
     * 逻辑:1.使用String.indexOf(),判断字符串的第一个位置是否为"空格"
     *      2.如果为“空格”,则截取第一个字符(此时为"空格")的后面字符串
     *      3.循环1-2步,直到第一位不是“空格”为止
     * 最优时间:20000左右
     */
    @Test
    public void test3(){

        String sql="                                                                                                    select   * from zevin";
//        String sql="  select   * from zevin";

        long l = System.nanoTime();
//————————————————————————————————————————————————————
        while (sql.indexOf(" ")==0){
            sql=sql.substring(1, sql.length());
        }
//————————————————————————————————————————————————————
        System.out.println(System.nanoTime()-l);

        System.out.println(sql);
    }

    /**
     * 方法四:计数器+转换char数组+String.substring()
     * 逻辑:1.使用toCharArray()分割原字符串,得到新的char数组
     *      2.使用计数器,对前缀"空格"进行计数统计
     *      3.判断是否为"空格"则采用 “chars[i]==32”
     *      4.最后截取下标的后面字符串
     * 最优时间:8000左右
     */
    @Test
    public void test4(){

        String sql="                                                                                                    select   * from zevin";
//        String sql="  select   * from zevin";

        long l = System.nanoTime();
//————————————————————————————————————————————————————
        char[] chars = sql.toCharArray();

        //while形式
        int i=0;
        while (chars[i]==32){
            i++;
        }
        sql=sql.substring(i,sql.length());

/*        //for形式
        for (int i = 0; i < chars.length; i++) {
            if(chars[i]!=32){
                sql=sql.substring(i,sql.length());
                break;
            }
        }*/
//————————————————————————————————————————————————————
        System.out.println(System.nanoTime()-l);

        System.out.println(sql);
    }

    /**
     * 方法五:计数器+转换byte数组+String.substring()
     * 逻辑:1.使用getBytes()分割原字符串,得到新的byte数组
     *      2.使用计数器,对前缀"空格"进行计数统计
     *      3.判断是否为"空格"则采用 “bytes[i]==32”
     *      4.最后截取下标的后面字符串
     * 最优时间:11000左右
     */
    @Test
    public void test5(){

        String sql="                                                                                                    select   * from zevin";
//        String sql="  select   * from zevin";

        long l = System.nanoTime();
//————————————————————————————————————————————————————
        byte[] bytes = sql.getBytes();

        //while形式
/*        int i=0;
        while (bytes[i]==32){
            i++;
        }
        sql=sql.substring(i,sql.length());*/

        //for形式
        for (int i = 0; i < bytes.length; i++) {
            if(bytes[i]!=32){
                sql=sql.substring(i,sql.length());
                break;
            }
        }
//————————————————————————————————————————————————————
        System.out.println(System.nanoTime()-l);

        System.out.println(sql);
    }

    /**
     * 方法六:split()+转换string[]数组+String.substring()
     * 逻辑:1.使用split()分割原字符串,得到新的字符串数组
     *      2.使用计数器,对前缀"空格"进行计数统计
     *      2.判断是否为"空格"则采用 "".equals(strings[i])
     *      4.最后截取下标的后面字符串
     * 最优时间:60000左右
     */
    @Test
    public void test6(){

        String sql="                                                                                                    select   * from zevin";
//        String sql="  select   * from zevin";

        long l = System.nanoTime();
//————————————————————————————————————————————————————
        String[] strings = sql.split(" ");

        //while形式
        int i=0;
        while ("".equals(strings[i])){
            i++;
        }
        sql=sql.substring(i,sql.length());

        //for形式
/*        for (int i = 0; i < strings.length; i++) {
            if(!"".equals(strings[i])){
                sql=sql.substring(i,sql.length());
                break;
            }
        }*/
//————————————————————————————————————————————————————
        System.out.println(System.nanoTime()-l);

        System.out.println(sql);
    }

    /**
     * 方法七:charAt()
     * 逻辑:略
     * 最优时间:7000左右
     */
    @Test
    public void test7(){

        String sql="                                                                                                    select   * from zevin";
//        String sql="  select   * from zevin";

        long l = System.nanoTime();
//————————————————————————————————————————————————————
        int i=0;
        while (sql.charAt(i)==32){
            i++;
        }
        sql=sql.substring(i,sql.length());
//————————————————————————————————————————————————————
        System.out.println(System.nanoTime()-l);

        System.out.println(sql);
    }

    /**
     * 方法八:replaceAll()+正则表达式
     * 逻辑:略
     * 最优时间:50000左右
     */
    @Test
    public void test8(){

        String sql="                                                                                                    select   * from zevin";
//        String sql="  select   * from zevin";

        long l = System.nanoTime();
//————————————————————————————————————————————————————
        sql=sql.replaceAll("^[ ]+", "");
//————————————————————————————————————————————————————
        System.out.println(System.nanoTime()-l);

        System.out.println(sql);
    }
}

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值