zoukankan      html  css  js  c++  java
  • 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#那样简单了。

    效率也是有保障的。

  • 相关阅读:
    hdu 2147 kiki's game
    HDU 1846 Brave Game
    NYOJ 239 月老的难题
    NYOJ 170 网络的可靠性
    NYOJ 120 校园网络
    xtu字符串 B. Power Strings
    xtu字符串 A. Babelfish
    图论trainning-part-1 D. Going in Cycle!!
    XTU 二分图和网络流 练习题 J. Drainage Ditches
    XTU 二分图和网络流 练习题 B. Uncle Tom's Inherited Land*
  • 原文地址:https://www.cnblogs.com/preacher/p/6826585.html
Copyright © 2011-2022 走看看