Java中字符串格式化是通过String类的format()方法来实现的,该方法有两种定义:
public static String format(String format,
Object... args)
public static String format(Locale l,
String format,
Object... args)
这两种用法,都有“String format”参数,该参数对应如下三种格式:
(1)、常规类型、字符类型和数值类型的格式说明符的语法
%[argument_index$][flags][width][.precision]conversion
(2)、用来表示日期和时间类型的格式说明符的语法
%[argument_index$][flags][width]conversion
(3)、与参数不对应的格式说明符的语法
%[flags][width]conversion
以上三种语法都含“flags”部分,它的意思就是标志。以下介绍这些标志的用法:
下表总结了受支持的标志。y 表示该标志受指示参数类型支持。
标志 |
常规 |
字符 |
整数 |
浮点 |
日期/时间 |
说明 |
'-' |
y |
y |
y |
y |
y |
结果将是左对齐。 |
'#' |
y1 |
- |
y3 |
y |
- |
结果应该使用依赖于转换类型的替换形式。 |
'+' |
- |
- |
y4 |
y |
- |
结果总是包括一个符号。 |
' ' |
- |
- |
y4 |
y |
- |
对于正值,结果中将包括一个前导空格。 |
'0' |
- |
- |
y |
y |
- |
结果将用零来填充。 |
',' |
- |
- |
y2 |
y5 |
- |
结果将包括特定于语言环境的组分隔符。 |
'(' |
- |
- |
y4 |
y5 |
- |
结果将是用圆括号括起来的负数。 |
1 取决于 Formattable 的定义。
2 只适用于 'd' 转换。
3 只适用于 'o'、'x' 和 'X' 转换。
4 对 BigInteger 应用 'd'、'o'、'x' 和 'X' 转换时,或者对 byte 及 Byte、short 及 Short、int 及 Integer、long 及 Long 分别应用 'd' 转换时适用。
5 只适用于 'e'、'E'、'f'、'g' 和 'G' 转换。
任何未显式定义为标志的字符都是非法字符,并且都被保留,以供扩展使用。
这里仅介绍短横线标志用法。
Java中字符串格式化的对齐有左对齐和右对齐两种方式。若不使用短横线“-”标志,则采用右对齐方式(缺省的对齐方式),若使用了短横线“-”标志,则采用左对齐方式。对齐方式需要使用width(宽度),且对应字符串的长度要小于宽度才有意义。
本例的关键代码如下:
btnNewButton01.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
//为了显示对齐的效果,这里还使用了另外一个字符串,即这里的"xyz";
String strRes;
//1、不使用左对齐标志‘-’,右对齐;也不设置宽度。
strRes = String.format("%s%s","abcde","xyz");
//显示为abcdexyz,abcde向左顶格靠文本框,两个字符串间没有间隔。
textField01.setText(strRes);
//可见,对齐方式需要使用width(宽度),才有意义。
//2、不使用左对齐标志‘-’,右对齐;同时设置宽度,这里为15。
strRes = String.format("%15s%s","abcde","xyz");
//abcde距离文本框左边10个空格,两个字符串间没有间隔。
textField02.setText(strRes);
//可见,在15个格子范围内,文本右对齐,左边就空出10个空格。
//3、使用左对齐标志‘-’,左对齐;同时设置宽度,这里为15
strRes = String.format("%-15s%s","abcde","xyz");
//abcde向左顶格靠文本框,两个字符串间有10个空格的间隔。
textField03.setText(strRes);
//可见,在15个格子范围内,文本左对齐,右边就空出10个空格。
}
});
标签:标志,横线,格式化,String,format,strRes,对齐,字符串,Java From: https://www.cnblogs.com/it001xyz/p/18228282