因为习惯了c#中的padleft和padright,接触java后突然失去这两个功能,觉得别扭,就试着实现了这两个方法。
java中string.format()中带有字符串对齐功能如下:
1
2
|
system.out.println(string.format( "*%1$-10s*" , "moon" ));
system.out.println(string.format( "*%1$10s*" , "moon" ));
|
输出:
以上方法经过简单的变换可以得到:
1
2
3
4
5
6
7
|
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);
}
|
调用下面方法:
1
2
|
system.out.println( "*" + padwhitespaceleft( "moon" , 12 ) + "*" );
system.out.println( "*" + padwhitespaceright( "moon" , 12 ) + "*" );
|
可以得到结果:
以上只是介绍左右对齐时,补空白符的方法,但是在实际开发过程中,单纯的补空白符也许满足不了开发要求,为此我还要做一次强化改进:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
/**
* @作者 尧
* @功能 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);
}
|
调用方法如下:
1
2
|
system.out.println( "*" + padleft( "moon" , 12 , '-' ) + "*" );
system.out.println( "*" + padright( "moon" , 12 , '-' ) + "*" );
|
输出结果:
这样在java中处理字符串对齐就可以像c#那样简单了。
效率也是有保障的。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。
原文链接:http://www.cnblogs.com/preacher/p/6826585.html