Java:StringBuffer 和串联

标签 java concatenation stringbuffer

我在 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");

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

最佳答案

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

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! ;)
}

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

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();
    }
}

这是一个 article关于这个问题。

希望对您有所帮助! :)

关于Java:StringBuffer 和串联,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/152190/

相关文章:

java - 当 GET 也可以充当 POST 时,为什么我们需要 RestFul 中的 GET 和 POST 方法

java - 对于最多 9-10 步的字符串连接,是否有比 StringBuilder 更快的方法?

string - Bash 字符串 concat 不起作用 - concat 的结果为空

java - 使用 StringBuffer 反转字符串中单词的代码

Java 程序输出应该是 true ,但它返回 false 为什么?

java - Liferay 的 portlet 名称是如何生成的?

java - 尝试将文本转换为java字符串数组

javascript - + 运算符的性能是否低于 StringBuffer.append()

java - 删除文件夹中的部分文件名

java - 使用 proguard 后 .jar 中出现 InvalidClassCastException