Java:printf语句中的文字百分号


138

我试图在Java中的printf语句中添加实际的百分号,但出现错误:

lab1.java:166: illegal escape character
                System.out.printf("%s\t%s\t%1.2f\%\t%1.2f\%\n",ID,pattern,support,confidence);
                                                 ^
lab1.java:166: illegal escape character
                System.out.printf("%s\t%s\t%1.2f\%\t%1.2f\%\n",ID,pattern,support,confidence);
                                                          ^
2 errors

我不知道如何在我的printf文件中放入一个实际的百分号?我以为可以使用\%来转义它,但事实并非如此。

有任何想法吗?

Answers:


197

使用百分号对百分号进行转义:

System.out.printf("%s\t%s\t%1.2f%%\t%1.2f%%\n",ID,pattern,support,confidence);

完整语法可以访问Java文档。此特定信息在第Conversions一个链接的部分中。

编译器生成错误的原因是反斜杠后面只能包含有限数量的字符%不是有效字符。


102

转义百分号是双百分号(%%):

System.out.printf("2 out of 10 is %d%%", 20);

2

您可以使用Apache Commons Logging实用程序中的StringEscapeUtils,也可以使用每个字符的代码手动进行转义。


应该使用StringEscapeUtilsfrom commons-text,因为commons-lang3不赞成使用from 。
Eric Wang
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.