使用String.format()方法时遇到问题。
所以我想创建一个带换行符的String,我使用%n
。
我创建了这样的字符串:
for (int i = 0; i < authorNames.size(); i++) {
tmpReturnString += authorNames.get(i) + "%n";
}
authorNames
使用ArrayList。
接下来我想返回格式化的字符串:
returnResult.setAttributes(0, String.format(tmpReturnString.substring(0, tmpReturnString.length() - 1)))
returnResult
将是我的回归。
但在这里我得到了java.util.UnknownFormatConversionException: Conversion = '%'
。
不幸的是,我不知道如何解决这个问题。此外,其他问题没有帮助我。
提前致谢!
答案 0 :(得分:2)
我想你想删除最后一个新行,但是只删除一个字符,最后你的字符串以%
结尾。
请改为:
String.format(tmpReturnString.substring(0, tmpReturnString.length() - 2))
(删除2个字符而不只是1个)
或者,更好的是,如果你使用apache commons:
String.format(StringUtils.join(authorNames, "%n"));
答案 1 :(得分:0)
for (int i = 0; i < authorNames.size(); i++) {
tmpReturnString += authorNames.get(i) + "%n";
}
总是返回两个最后一个字符为“%n”的字符串。 所以当你使用
时substring(0, tmpReturnString.length() - 1)
现在最后一个字符是'%'。 '%'不是有效的格式说明符。
详情请点击此处:http://docs.oracle.com/javase/7/docs/api/java/util/Formatter.html