我很难过,不知道该怎么做。我正在创建一个方法,将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 “。
如何删除字符串中的最后一个空格?
答案 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();