使用 Java LPAD 和 RPAD 格式化。在字符串两侧填写指定字符。
Java中的字符串的 SQL 函数LPAD,,RPAD下面是一个示例源,执行与下面类似的过程。
它们是定长格式这在处理以下问题时非常有用
- LPAD... 返回填充到字符串左侧的重复字符串,这样总字符数就是指定的位数。
- RPAD... 返回在字符串右侧填充的重复字符串,使总字符数达到指定的位数。
示例程序
/**
* 执行 RPAD。
* 将字符串[str]右侧的指定字符串[addStr]添加到[len]
* 插入直至满。
* @param str 目标字符串
* @param len 要重新填充的位数(指定执行 RPAD 后的大小)
* @param addStr 要插入的字符串
* @return 转换后的字符串。
*/
公共静态字符串rpad(字符串str,int len,字符串addStr){
返回 fillString(str, “R”, len, addStr);
}
/**
* 将要添加的字符串[addStr]添加到字符串[str]中
* 在[位置]处插入,直到[长度]填满。
*
* *即使 [str] 为 null 或空文字,也使用 [addStr]
* 返回插入的结果,直到[len]填满。
* @param str 目标字符串
* @param 位置 在 ⇒ L 或 l 之前插入 在 ⇒ R 或 r 之后插入
* @param len 要补充的位数
* @param addStr 要插入的字符串
* @return 转换后的字符串。
*/
公共静态字符串 fillString(字符串 str, 字符串位置,
国际长度,
字符串 addStr) {
if (addStr == null || addStr.length() == 0) {
抛出新的 IllegalArgumentException
(“要插入的字符串的值无效。addStr=”+addStr);
}
if (str == null) {
字符串=“”;
}
StringBuffer 缓冲区 = new StringBuffer(str);
while (len > buffer.length()) {
if (position.equalsIgnoreCase(“l”)) {
int sum = buffer.length() + addStr.length();
如果(总和>长度){
addStr = addStr.子字符串
(0,addStr.length() – (sum – len));
buffer.insert(0, addStr);
}别的{
buffer.insert(0, addStr);
}
} 别的 {
buffer.append(addStr);
}
}
if (buffer.length() == len) {
返回 buffer.toString();
}
返回 buffer.toString().substring(0, len);
}
执行结果
执行示例
public static void main(String[] args) { // 对于 lpad;向左填充空格,直到填满 5 个数字。 String ret = lpad("abc", 5 , " "); System.out.println("'" + ret + "'"); // 对于 rpad,向右填充空格,直到 5 位数字。 ret = rpad("abc", 5 , " "); System.out.println("'" + ret + "'");。 // 如果为空。 ret = rpad("abc", 5 , " "); System.out.println("'" + ret + "'"); }
输出结果
'abc'。 ' 'abc ' ' 'abc ' '