当前位置:  开发笔记 > 编程语言 > 正文

Java:StringBuffer&Concatenation

如何解决《Java:StringBuffer&Concatenation》经验,为你挑选了2个好方法。

我在Java中使用StringBuffer将字符串连接在一起,如下所示:

StringBuffer str = new StringBuffer();

str.append("string value");

我想知道是否有方法(虽然我没有从文档的快速浏览中找到任何东西)或其他一些方法来添加"填充".

让我解释; 每次我在字符串中添加一些内容时,我想在最后添加一个空格,如下所示:

String foo = "string value";
str.append(foo + " ");

我有几个要追加的电话..每次,我想添加一个空格.有没有办法设置对象,以便在每次追加后自动添加空格?

编辑 -

String input
StringBuffer query = new StringBuffer();
Scanner scanner = new Scanner(System.in);
scanner.UseDelimiter("\n");

do {
   System.out.println("sql> ");

   input = scanner.next();

   if (!empty(input)) query.append(input);

   if (query.toString().trim().endsWith(";")) {
         //run query
   }
}
while (!input.equalsIgnoreCase("exit");

我会使用StringBuilder,尽管grom建议,但这就是代码现在的样子



1> kolrie..:

我认为使用辅助方法(未经测试的代码)可以更轻松地处理这个问题:

public String myMethod() {
    StringBuilder sb = new StringBuilder();
    addToBuffer(sb, "Hello").addToBuffer("there,");
    addToBuffer(sb, "it").addToBuffer(sb, "works");
}

private StringBuilder addToBuffer(StringBuilder sb, String what) {
    return sb.append(what).append(' ');  // char is even faster here! ;)
}

甚至使用具有流畅界面的Builder模式(也是未经测试的代码):

public String myMethod() {
    SBBuilder builder = new SBBuilder()
        .add("Hello").add("there")
        .add("it", "works", "just", "fine!");

    for (int i = 0; i < 10; i++) {
        builder.add("adding").add(String.valueOf(i));
    }

    System.out.println(builder.build());
}

public static class SBBuilder {
    private StringBuilder sb = new StringBuilder();

    public SBBuilder add(String... parts) {
        for (String p : parts) {
            sb.append(p).append(' '); // char is even faster here! ;)
        }
        return this;
    }

    public String build() {
        return sb.toString();
    }
}

这是一篇关于这个主题的文章.

希望能帮助到你!:)



2> grom..:

你应该使用StringBuilder.

在可能的情况下,建议首先使用此类优先于StringBuffer,因为在大多数实现中它会更快.

推荐阅读
N个小灰流_701
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有