限制循环stringbuilder中的空格

时间:2013-12-06 20:37:19

标签: java for-loop stringbuilder

我很难过,不知道该怎么做。我正在创建一个方法,将String []作为参数并将其构建为字符串。然后我的main方法将使用此方法的输出作为fileWriter的名称。其余的代码已经到位。

public static String nameFromString (String[] args){
    StringBuilder builder = new StringBuilder();
    for (int i = 1; i < args.length; i++) {
        builder.append(args[i]);
        builder.append(" ");
    }
    return builder.toString();  
}

例如,如果我在程序中写“新我的文件”,则使用“我的文件”作为名称,主要方法附加“ .txt的”。到目前为止,没有问题。

但我现在的问题是,它将文件命名为“我的文件.txt ”,并且在读取文件时,使用相同的方法,它会尝试读取“文件名”。 txt“而不是”文件名.txt “。

如何删除字符串中的最后一个空格?

6 个答案:

答案 0 :(得分:4)

您可以使用String.trim()方法删除前导和尾随空格。

String str = " ab c  ".trim(); // -> "ab c"

答案 1 :(得分:1)

我在这里看到了很多关于索引或缓冲区检查的答案。我只想分享我经常使用的一段代码,它基于Guava Joiner类:

String result = Joiner.on(' ').join(args);

这是Google真正的小而聪明的解决方案。它也经过优化,并在里面使用StringBuilder ..

答案 2 :(得分:0)

一种方法是以循环索引为条件调用append

for (int i = 1; i < args.length; i++) {
    builder.append(args[i]);
    if (i < args.length - 1) {
      builder.append(" ");
    }
}

答案 3 :(得分:0)

你可以使用“插入”,或者你可以修改你的追加,或者你可以trim()如下

APPEND 非常类似于您的初始添加if。

if (i + 1 < args.length) { // added if.
  builder.append(" ");
}

“插入”稍微更改循环

for (int i = 1; i < args.length; i++) {
  if (i != 1) {
    builder.append(" ");
  }
  builder.append(args[i]);
}

TRIM 更改此回复

return builder.toString().trim();  

答案 4 :(得分:0)

有很多方法可以实现。我在循环完成后用来删除StringBuilder中的最后一个字符,但这要求你确保最后一个字符是空格,相反,我知道使用...

for (int i = 1; i < args.length; i++) {
    if (builder.length() > 0) {
        builder.append(" ");
    }
    builder.append(args[i]);
}

答案 5 :(得分:0)

最简单的方法是在前面附加一个字符串然后继续切换附加序列:

if(args.length < 2)return "";

StringBuilder builder = new StringBuilder(args[1]);

for (int i = 2; i < args.length; i++) {
        builder.append(" ");
        builder.append(args[i]);

    }

return builder.toString();