String[] str = {"this", "is", "a", "test", "."}
我想输出:
"this is a test."
StringBuilder sb = new StringBuilder();
for(int i=0; i<str.length; i++){
sb.append(str[i] + " ");
}
然而,这将输出:“这是一个测试。”如何正确避开点之前的空间?
答案 0 :(得分:1)
您可以在concat操作后删除最后一个字符前的空格。
public static void main(String[] args) {
String[] str = {"this", "is", "a", "test", "."};
StringBuilder sb = new StringBuilder();
for(int i = 0; i < str.length; i++){
sb.append(str[i] + " ");
}
sb.deleteCharAt(sb.length() - 3);
System.out.println(sb);
}
答案 1 :(得分:0)
public String generateSentence(String[] str) {
StringBuilder builder = new StringBuilder(str[0]);
for (String word: str) {
if (word.equals(".")) {
builder.append(word);
} else {
builder.append(" ").append(word);
}
}
return builder.toString();
}
答案 2 :(得分:0)
我不是一个java开发人员,但这里是快速的&amp;脏(抱歉任何语法违规)
StringBuilder sb = new StringBuilder();
for(int i=0; i<str.length; i++){
if(i==str.length-1 || i==0){
sb.append(str[i]);
}else{
sb.append(" "+str[i]);
}
}
对于第一个或最后一个项目,只需将值添加到字符串中,否则添加空格和值。
答案 3 :(得分:0)
技术上this is a test .
是正确的。如果你想要像句点和逗号这样的语法符号没有空格,你就必须做一些正则表达式。此外,您不需要循环或StringBuilders:
String[] array = new String[] { "this", "is", "a", "test", "." };
String joined = String.join(" ", array);
joined = joined.replaceAll(" ([.,])", "$1");
类似的东西,第一个replaceAll()参数是一个正则表达式,包含你在括号内关注的所有符号
答案 4 :(得分:0)
使用正则表达式,您可以找到标点符号并避免使用最后一个空格,例如,如果您有以下数组:
{"this", "is", "a", "test", ".", "and", "this", "is", "another",
"test", ";", "here", "is", "one", "test", "more", "!"};
所以,你可以用这种方式实现:
private static String regex = "[.!;?\\-]";
String[] str = {"this", "is", "a", "test", ".", "and", "this", "is",
"another", "test", ";", "here", "is", "one", "test", "more", "!"};
StringBuilder sb = new StringBuilder();
for (int i = 0; i < str.length; i++) {
if (str[i].matches(regex)) {
sb.deleteCharAt(sb.length() - 1);
}
sb.append(str[i] + " ");
}
System.out.println(sb.toString());
<强>输出:强>
this is a test. and this is another test; here is one test more!
答案 5 :(得分:0)
试试这个java 8版本:
String[] str = {"this", "is", "a", "test", "."};
String test = Arrays.stream(str).reduce(new String (), (p,q) -> p+" "+q).replace(" .", ".");
System.out.println("out ::" + test);
输出:
out ::这是一个测试。