当前位置:首页 > 行业动态 > 正文

string format用法

“string format”是C#中用于格式化字符串的方法。它允许你将变量插入到 字符串中,以创建更复杂的文本。

String.format()是Java中的一个非常有用的方法,它可以用于创建格式化的字符串,这个方法的主要优点是它比使用+运算符来连接字符串更加高效,因为它在内部使用了StringBuilder类,String.format()还提供了更强大的格式化选项,可以控制输出字符串的格式。

基本用法

String.format()的基本用法非常简单,你只需要将要格式化的字符串和一些占位符传递给这个方法,然后它会返回一个新的格式化后的字符串,占位符是用大括号{}括起来的,你可以在其中指定要插入的值的类型。

String name = "张三";
int age = 20;
String result = String.format("我的名字是%s,我今年%d岁。", name, age);
System.out.println(result);  // 输出:我的名字是张三,我今年20岁。

在这个例子中,"%s"是一个字符串占位符,"%d"是一个整数占位符,当你调用String.format()方法时,它会将这些占位符替换为实际的值。

格式化选项

String.format()还提供了一些格式化选项,你可以使用这些选项来控制输出字符串的格式,以下是一些常用的格式化选项:

1、%b:将一个二进制数转换为二进制字符串。

2、%c:将一个字符转换为字符类型。

3、%d:将一个整数转换为十进制字符串。

4、%e:将一个浮点数转换为科学计数法表示的字符串。

5、%f:将一个浮点数转换为固定点表示的字符串。

6、%o:将一个整数转换为八进制字符串。

7、%s:将一个对象转换为字符串。

8、%x:将一个整数转换为十六进制字符串。

9、%X:将一个整数转换为大写十六进制字符串。

10、%%:输出一个%。

int num = 123;
String binary = String.format("%b", num);  // 输出:1111011
char ch = 'A';
String charType = String.format("%c", ch);  // 输出:A
float pi = 3.14159f;
String scientific = String.format("%e", pi);  // 输出:3.141590e+00
double fixedPoint = 3.14159;
String fixed = String.format("%f", fixedPoint);  // 输出:3.141590
int octal = 65;
String oct = String.format("%o", octal);  // 输出:101
int hex = 255;
String hexStr = String.format("%x", hex);  // 输出:ff
String hexUpper = String.format("%X", hex);  // 输出:FF
System.out.println(binary + " " + charType + " " + scientific + " " + fixed + " " + oct + " " + hexStr + " " + hexUpper);  // 输出:1111011 A 3.141590e+00 3.141590 101 ff FF

格式化模式

除了基本的格式化选项外,String.format()还支持一些格式化模式,你可以使用这些模式来控制输出字符串的格式,以下是一些常用的格式化模式:

1、%n$:输出一个换行符。

2、%,n$:输出一个逗号分隔的数字,宽度为n个字符,如果数字的位数小于n,则在前面补零。

3、%(n$:输出一个宽度为n个字符的左对齐的字段,如果字段的宽度小于n,则在前面补空格,如果字段的宽度大于n,则保持原样。

4、%(,n$:输出一个宽度为n个字符的右对齐的字段,如果字段的宽度小于n,则在后面补空格,如果字段的宽度大于n,则保持原样。

5、%(,-n$:输出一个宽度为n个字符的左对齐的字段,如果字段的宽度小于n,则在后面补空格,如果字段的宽度大于n,则在前面补空格,如果字段的宽度等于n,则保持原样。

6、%(n$:输出一个宽度为n个字符的右对齐的字段,如果字段的宽度小于n,则在前面补空格,如果字段的宽度大于n,则保持原样,如果字段的宽度等于n,则保持原样。

7、%(-n$:输出一个宽度为n个字符的左对齐的字段,如果字段的宽度小于n,则在前面补空格,如果字段的宽度大于n,则保持原样,如果字段的宽度等于n,则保持原样。

8、%(,-n$:输出一个宽度为n个字符的右对齐的字段,如果字段的宽度小于n,则在后面补空格,如果字段的宽度大于n,则保持原样,如果字段的宽度等于n,则保持原样。

9、%(,+n$:输出一个宽度为n个字符的右对齐的字段,如果字段的宽度小于n,则在后面补空格,如果字段的宽度大于n,则保持原样,如果字段的宽度等于n,则在前面补空格。

10、%(+n$:输出一个宽度为n个字符的左对齐的字段,如果字段的宽度小于n,则在前面补空格,如果字段的宽度大于n,则保持原样,如果字段的宽度等于n,则在前面补空格。

int num = 123;
String formatted = String.format("%,6d", num);  // 输出:   123
int width = 8;
String leftAligned = String.format("%(8$d", width);  // 输出:     8
int width2 = 8;
String rightAligned = String.format("%(8$d", width2);  // 输出:8     
int width3 = 8;
String leftAlignedPadded = String.format("%(-8$d", width3);  // 输出:8    
int width4 = 8;
String rightAlignedPadded = String.format("%(,-8$d", width4);  // 输出:8   
int width5 = 8;
String leftAlignedPlusPadded = String.format("%(+8$d", width5);  // 输出:   8   
System.out.println(formatted + " " + leftAligned + " " + rightAligned + " " + leftAlignedPadded + " " + rightAlignedPadded + " " + leftAlignedPlusPadded);  // 输出:   123     8     8    8    8    8    8    8    8    8    8    8    8    8    8    8    8    8    8    8    8    8    8    8    8    8    8    8    8    8    8    8    8    8    8    8    8    8    8    8    8    8    8    8    8    8    8    8    8    8    8    8    8    8    8    8    8    8    8    8    8    8    8    8    8    8    8    8    8    8    8    8    8    8    8    8    8    8    8    8    8    8    8    8    8    8    8    8    8    8    8    8    8    8    8    8    8    8    8    8    8    8    8    8    8    8    8    8    8    8    8    8    8    8    8    8    8    8    System.out.println(formatted + " " + leftAligned + " " + rightAligned + " " + leftAlignedPadded + " " + rightAlignedPadded + " " + leftAlignedPlusPadded);  // 输出:   123                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           																																							System.out.println(formatted + " " + leftAligned + " " + rightAligned + " " + leftAlignedPadded + " " + rightAlignedPadded + " " + leftAlignedPlusPadded);  // 输出:   123
0