你可以用什么方法创建一个2000“空格”的字符串

时间:2010-07-13 20:41:16

标签: java oracle

由于各种原因,我试图将字符串设置为2000个空格。目前我正在使用:

String s = String.format("%1$-2000s"," ");

这对Java 5很有用,但是,我们部门的一些开发人员使用的是1.4,但这不起作用。

我想知道,是否还有其他方法可以达到相同的效果?我知道我可以做一些像for循环一次添加一个空格的东西,但我正在寻找像格式选项这样简单的东西。

对于那些可能对我为什么需要它感兴趣的人,这是因为我们在数据对象上有一个XML类型,插入到DB中时为null。然后使用XML字符串进行更新,通常大小约为2000个字符。在Oracle中,预先保留此空间可以防止行迁移,从而提高性能。

谢谢!

8 个答案:

答案 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库都有命令来重复(重复)字符串。