Java removes the left (prefix) space from the string

List 8 ways to remove the string prefix "space" as follows

Need to import junit-4..11 and 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);
    }
}

Guess you like

Origin blog.csdn.net/m0_61849361/article/details/124504109