Java代码如何实现字符串填充效果呢?
下文笔者讲述当一个字符串不足位数或左边需空出指定位数(右边需加入占位符)时,使用java代码实现其效果的方法分享,如下所示
填充占位符的实现思路: 方式1: 使用String.format实现其效果 方式2: 使用Apache Common Lang中方法实现字符串填充字符串
String.format填充字符串
String.format填充字符串效果 空格使用\u0020填充即可例:
package com.java265; public class JavaPadString1 { public static void main(String[] args) { String input = "I Java265 最爱java!"; // I Java265 最爱java! String r1 = String.format("%s", input); // pad 20 chars String r2 = String.format("|%20s|", input); // | I Java265 最爱java!| String r3 = String.format("|%-20s|", input); // |I Java265 最爱java! | // ********I*Java265*最爱java! String r4 = String.format("%20s", input).replace(" ", "*"); // I*Java265*最爱java!******** String r5 = String.format("%-20s", input).replace(" ", "*"); System.out.println(r1); System.out.println(r2); System.out.println(r3); System.out.println(r4); System.out.println(r5); } } -------运行以上代码,将输出以下信息 I Java265 最爱java! | I Java265 最爱java!| |I Java265 最爱java! | ********I*Java265*最爱java! I*Java265*最爱java!********
Apache Common Lang
Apache Common Lang可在字符串 左侧,右侧或中央填充 具体的实现方式,如下例所示
pom.xml 引入依赖 <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-lang3</artifactId> <version>3.9</version> </dependency> package com.java265; import org.apache.commons.lang3.StringUtils; public class JavaPadString2 { public static void main(String[] args) { String input = "I Java265 最爱java!"; String r4 = StringUtils.leftPad(input, 20, "*"); String r5 = StringUtils.rightPad(input, 20, "*"); String r6 = StringUtils.center(input, 20, "*"); System.out.println(r4); System.out.println(r5); System.out.println(r6); } } ----运行以上代码,将输出以下信息---- ********I Java265 最爱java! I Java265 最爱java!******** ****I Java265 最爱java!****
左边填充的源码分享
public static String leftPad(final String str, final int size, String padStr) { if (str == null) { return null; } if (isEmpty(padStr)) { padStr = SPACE; } final int padLen = padStr.length(); final int strLen = str.length(); final int pads = size - strLen; if (pads <= 0) { return str; // returns original String when possible } if (padLen == 1 && pads <= PAD_LIMIT) { return leftPad(str, size, padStr.charAt(0)); } if (pads == padLen) { return padStr.concat(str); } else if (pads < padLen) { return padStr.substring(0, pads).concat(str); } else { final char[] padding = new char[pads]; final char[] padChars = padStr.toCharArray(); for (int i = 0; i < pads; i++) { padding[i] = padChars[i % padLen]; } return new String(padding).concat(str); } }
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。