首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >java字符串中要应用String.format的转义%符号

java字符串中要应用String.format的转义%符号
EN

Stack Overflow用户
提问于 2013-09-21 02:22:06
回答 3查看 9.6K关注 0票数 9

在我的项目(Java/Play框架)中,我有一个错误处理路由,它检查来自web服务的响应如果响应是错误代码,我们显示相应的错误消息,说明用户输入的问题,该服务检查用户输入的有效性。

当用户输入%符号时,此逻辑将中断,因为错误显示逻辑使用

代码语言:javascript
复制
String.format(message, messageArgs);

它插入消息字符串中的%,如果messageArgs也包含%,我就会得到一个异常。

在显示消息之前,我需要清理、转义或删除用户输入中的%。

消息:请求的电子邮件地址%s无效messageArgs: orlybg%@gmail.com

对于如何在Java中以最简单、最快捷的方式做到这一点,有什么建议吗?

以下是错误日志的一部分

代码语言:javascript
复制
 java.util.UnknownFormatConversionException: Conversion = 'i'
   at java.util.Formatter$FormatSpecifier.conversion(Formatter.java:2646)
   at java.util.Formatter$FormatSpecifier.<init>(Formatter.java:2675)
   at java.util.Formatter.parse(Formatter.java:2528)
   at java.util.Formatter.format(Formatter.java:2469)
   at java.util.Formatter.format(Formatter.java:2423)
   at java.lang.String.format(String.java:2797)
   at controllers.api.PublicAPI.renderAPIError(PublicAPI.java:176)
   at controllers.api.DeviceAPI.setEmailAddress(DeviceAPI.java:736)
   at play.mvc.ActionInvoker.invokeWithContinuation(ActionInvoker.java:557)
   at play.mvc.ActionInvoker.invoke(ActionInvoker.java:508)
   at play.mvc.ActionInvoker.invokeControllerMethod(ActionInvoker.java:484)
   at play.mvc.ActionInvoker.invokeControllerMethod(ActionInvoker.java:479)
   at play.mvc.ActionInvoker.invoke(ActionInvoker.java:161)
   at Invocation.HTTP Request(Play!)

谢谢!

EN

回答 3

Stack Overflow用户

发布于 2013-09-21 02:39:32

消息字符串中,%符号用另一个%进行转义。所以你需要加倍:%%

例如:"Bla bla %i bla“-> "Bla %%i bla”

messageArgs字符串中,%符号没有问题,您不需要对其进行转义

票数 6
EN

Stack Overflow用户

发布于 2016-06-15 10:28:29

当需要打印字符串%时,请在格式化程序字符串中使用%%

代码语言:javascript
复制
String.format("sendOneSuccessCountRate: %7.2f%%"
              ,sendOneSuccessCountRate //0.95
             );

会给你95.00%

票数 5
EN

Stack Overflow用户

发布于 2013-09-21 02:34:17

如果你收到了java.util.UnknownFormatConversionException: Conversion = 'i',你很可能在你的message中使用了%i来格式化一个整数,这是不正确的。您必须使用%d来格式化分位整数。可以在here中找到完全支持的转换规范。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18923385

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档