Java中實現String.padLeft和String.padRight


因為習慣了C#中的padLeft和padRight,接觸Java后突然失去這兩個功能,覺得別扭,就試着實現了這兩個方法。

 

Java中String.format()中帶有字符串對齊功能如下:

System.out.println(String.format("*%1$-10s*", "moon"));
System.out.println(String.format("*%1$10s*", "moon"));

輸出:

 

以上方法經過簡單的變換可以得到:

public static String padWhitespaceLeft(String s, int len) {
    return String.format("%1$" + len + "s", s);
}

public static String padWhitespaceRight(String s, int len) {
    return String.format("%1$-" + len + "s", s);
}

調用下面方法:

System.out.println("*" + padWhitespaceLeft("moon", 12) + "*");
System.out.println("*" + padWhitespaceRight("moon", 12) + "*");

可以得到結果:

 

以上只是介紹左右對齊時,補空白符的方法,但是在實際開發過程中,單純的補空白符也許滿足不了開發要求,為此我還要做一次強化改進: 

    /**
     * @作者 堯
     * @功能 String左對齊
     */
    public static String padLeft(String src, int len, char ch) {
        int diff = len - src.length();
        if (diff <= 0) {
            return src;
        }

        char[] charr = new char[len];
        System.arraycopy(src.toCharArray(), 0, charr, 0, src.length());
        for (int i = src.length(); i < len; i++) {
            charr[i] = ch;
        }
        return new String(charr);
    }
    /**
     * @作者 堯
     * @功能 String右對齊
     */
    public static String padRight(String src, int len, char ch) {
        int diff = len - src.length();
        if (diff <= 0) {
            return src;
        }

        char[] charr = new char[len];
        System.arraycopy(src.toCharArray(), 0, charr, diff, src.length());
        for (int i = 0; i < diff; i++) {
            charr[i] = ch;
        }
        return new String(charr);
    }

調用方法如下:

System.out.println("*" + padLeft("moon", 12, '-') + "*");
System.out.println("*" + padRight("moon", 12, '-') + "*");

輸出結果:

 

這樣在Java中處理字符串對齊就可以像C#那樣簡單了。

效率也是有保障的。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM