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);
}
}
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。


