After方法:在“-”或“”处剪切字符串

时间:2019-03-08 06:18:04

标签: java

输入字符串可能包含连字符和空格,这些符号和空格标记了截断字符串的位置。输出字符串将是输入字符串的截断版本,而输入int值是输出字符串的所需长度。输出字符串应在第一个合法位置截断输入字符串,以便输出字符串具有所需的长度。如果截断发生在空格处,则输出不包括空格,但是如果截断发生在连字符处,则输出包括连字符。输出中不包含其他连字符,但是其他空格。

如何在不使用数组和中断的情况下修复代码以获得“应输出哪些代码”输出?

public static String after(int length, String s1) {

    StringBuilder sb = new StringBuilder();
    int x = 0;
    for(; sb.length() < length && x < s1.length() - 1; x = x + 1) {
      if(s1.charAt(x) != '-') {
        sb.append(s1.charAt(x));
      }
    }
    for(; x < sb.length() && s1.charAt(x) - 1 != '-'; x = x + 1) {
      sb.append(s1.charAt(x));
    }
    if(s1.charAt(x) == ' ' && s1.length() + 1 == s1.length()) {
      sb.append(s1.charAt(x));
    }
    return sb.toString();
  }

输入是:

 HW2.after(5, "La-te-ly the-re.")
 HW2.after(6, "La-te-ly the-re.")
 HW2.after(7, "La-te-ly the-re.")

我正在获取输出:

"Latel"
"Lately"
"Lately "

实际输出是:

"Late-"
"Lately"
"Lately the-"

1 个答案:

答案 0 :(得分:0)

听起来像是一个家庭作业问题,所以我只向您介绍我使用的方法,因此您可以自己考虑一下编码...

停止第一个循环,使其少于所请求字符的数量。您不必跳过空格,而要保留它们的数量,并在循环中从要测试的sb.length()中减去它,因为所需的长度不包括空格。

然后处理您现在指向一个空格的情况,为此进行测试,如果为true,则将其添加到输出字符串中并前进x。

然后继续查看下一个字符,并将其添加到结果中,只要它不是破折号或空格即可。

最后,如果您停在破折号上,请将其添加到输出中。