日期:2014-05-20  浏览次数:20663 次

请叫个字符串问题
要求判断一个字段的长度,并补位
例如字段名字为ABC,最大能容纳5个字符
判断ABC长度要是小于5位的话,用A补位
例:输入了12
        补位后为12AAA
请教怎么实现

------解决方案--------------------
/**
* 以指定的字符右填充
*
* @param s 需要填充的字串
* @param len 填充后的长度
* @param c 指定的填充字符
* @return 右填充零后的字串
*/
public String padRight(String s, int len, char c) {

if (s == null) {
s = " ";
}

s = s.trim();
if (s.length() > = len) {
return s;
}

int fill = len - s.length();

StringBuffer d = new StringBuffer(s);
while (fill-- > 0) {
d.append(c);
}

return d.toString();
}
------解决方案--------------------
/**
* 以指定的字符右填充,如果源字符串长度大于等于指定的长度,原样返回,否则补位
*
* @param value 需要填充的字串
* @param maxLen 填充后的长度
* @param way 填充字符的方向
* @return 充后的字串
*/
public static String addString(String value, int maxLen, String way) {
int length = maxLen - value.length();
String ret = value;

char[] letter = new char[length];
String temp = " ";

if (length> 0) { //判断要填充的个数
java.util.Arrays.fill(zero, 'A '); //填充的字符可自定义,也可传入指定的参数
String temp = new String(letter);

if (way.equals( "L "))
ret = temp + ret; //左补位
else
ret = ret + temp ;//右补位
}
return ret;
}
------解决方案--------------------
填充字符串
/**
* 以指定的字符串右填充
*
* @param s 需要填充的字符串
* @param len 填充后的长度
* @param c 指定的填充字符串
* @return 右填充后的字串
*/

public String substr(String s, String c,int len) {

if (s == null) {
s = " ";
}

s = s.trim();

s = s+c;

return s.substring(0,len);
}
eg:

String ABC= "12 ";
String s1= "ABABABABAB ";
String s2= "AAAAA ";
ABC = substr(ABC,s2,5);
----------
12AAA
----------
如果填充的是AB, 长度是10

ABC = substr(ABC,s1,10)
----------
12ABABABAB
----------

如果源字串长度大于所需长度, 返回所需长度字串
ABC= "121212 ";
ABC = substr(ABC,s2,5);
----------
12121
----------
------解决方案--------------------
public class Main {

public static void main(String[] args) throws Exception {
System.out.println(RPad( " ", "0 ", 8));
}

public static String RPad(String targetString, String padString, int length) {
if (targetString == null || targetString.length() > length
|| padString == null || " ".equals(padString)) {
return targetString;
}
int tempLength = length - targetString.length();
for (int i = 0; i < tempLength; i++) {
targetString += padString;
}
return targetString.substring(0, length);
}

}

RPad( "a ", "3210 ", 10) => "a321032103 "
RPad( "asdf ", "01 ", 1) => "asdf "