由于各种原因,我试图将字符串设置为2000个空格。目前我正在使用:
String s = String.format("%1$-2000s"," ");
这对Java 5很有用,但是,我们部门的一些开发人员使用的是1.4,但这不起作用。
我想知道,是否还有其他方法可以达到相同的效果?我知道我可以做一些像for循环一次添加一个空格的东西,但我正在寻找像格式选项这样简单的东西。
对于那些可能对我为什么需要它感兴趣的人,这是因为我们在数据对象上有一个XML类型,插入到DB中时为null。然后使用XML字符串进行更新,通常大小约为2000个字符。在Oracle中,预先保留此空间可以防止行迁移,从而提高性能。
谢谢!
答案 0 :(得分:18)
char[] spacesArray = new char[2000];
Arrays.fill(spacesArray, ' ');
String spaces = new String(spacesArray);
答案 1 :(得分:3)
最简单的答案:(滚动查看所有代码)
String s = " "; // 2000 spaces
答案 2 :(得分:1)
一个StringBuffer,然后在循环中添加2000次空格,之后添加toString()。我不认为有任何“更简单”的方法可以做到这一点,但最终还是无法做到这一点。
如果你做了很多,那么它将成为一个很好的库函数。
答案 3 :(得分:1)
我在个人图书馆找到的随机功能:
public static String whiteSpace2(int l) {
if (l==0) return "";
String half=whiteSpace2(l/2);
if ((l&1)!=0) {
return half+" "+half;
} else {
return half+half;
}
}
不声称它是生成空格的最快方法,但它可以工作: - )
答案 4 :(得分:1)
您可以直接在insert语句中使用lpad(' ',2000,' ')
告诉Oracle创建您想要的值。
实际上,您可以将相关字段设置为默认值,这可以防止您需要在多个位置更改它(如果您的代码显式发送null作为字段的值,那将覆盖默认)。
答案 5 :(得分:0)
StringUtils.repeat(" ", 2000)
(来自commons-lang)
但是,我不确定是否应该使用需要5行注释来解释为什么需要的代码成本进行此类微优化。如果你这样做 - 一定要添加一个广泛的评论,否则想象那些阅读你的代码的人的反应。
答案 6 :(得分:0)
如果没有别的办法:
StringBuilder sb = new StringBuilder();
for(int i = 0; i < 2000; ++i)
sb.append(" ");
String str = new String(sb);
答案 7 :(得分:0)
见另一个问题。
Can I multiply strings in Java to repeat sequences?
Apache Commons StringUtils和Google Guava库都有命令来重复(重复)字符串。