需要将字符串输出格式化为特定长度,如何将字符串中的每个字符数计数到设定限制

时间:2013-12-06 13:49:47

标签: java string

我需要限制输出字符串的长度而不格式化输入字符串本身。我想计算读取到任意限制的字符串的每个字符 - 让我们说20 - 这时它将开始在新行上打印。但是,我还需要单词来保持整个没有连字符或任何东西,所以我想,一旦我达到计算每个字符的点,我可以引入一个逻辑语句,以便它不会开始一个新的行,直到它到达20限制后的空间。

这可能吗?

在下面的The Badge的帮助下,这就是我现在所处的位置:

代码:

    responder.printWelcome();

    while(!finished) {
        HashSet<String> input = reader.getInput();

        if(input.contains("bye")) {
            finished = true;
        }
        else {
            String response = responder.generateResponse(input);
            Scanner scan = new Scanner (response);
            int count = 0;
            scan.useDelimiter("");
            StringBuilder sb = new StringBuilder();
            while (scan.hasNext()){
                if (count <20){
                    sb.append(scan.next());
                    count = count + 1;

                }
                else{
                    System.out.println(sb);
                    sb.delete(0, 20);
                    count = 0;
                }

            }
        }
    }
    responder.printGoodbye();
}

编辑:修正了输出问题,因为它没有打印整个句子(虽然它还没有打印出句子的结尾 - &#39;配置。&#39;只出现在&#39; ; configurati&#39)

任何人都可以帮我格式化它,以便在它到达空间之前不会打印新行吗?

EDIT2:感谢Anuswadh,我感觉越来越近了!虽然新问题是它似乎正在丢失字符。

当我输入此文字时:

  

我于1874年11月30日出生于斯宾塞家族的一个分支马尔堡公爵家族 - 你可能知道我的远房亲戚戴安娜斯宾塞。

返回此文字:

  

我出生于1874年11月30日,出生于马尔堡公爵家族,这是斯宾塞家族的一个人 - 你可能知道我的远房亲戚迪娜。

2 个答案:

答案 0 :(得分:0)

您可以构造一个Scanner对象,并将其传递给String。

Scanner scan = new Scanner (string_name);

然后构建一个循环,根据您的条件读取字符 例如

int count = 0;
scan.useDelimiter("");
StringBuilder sb = new StringBuilder();
while (scan.hasNext()){
  if (count <20){
   sb.append(scan.next());
}else{
  //do what ever you want 
}

答案 1 :(得分:0)

你可以看到下一个字符是否是一个空白区域并迭代,直到你达到它为止。

responder.printWelcome();

while(!finished) {
    HashSet<String> input = reader.getInput();

    if(input.contains("bye")) {
        finished = true;
    }
    else {
        String response = responder.generateResponse(input);
        Scanner scan = new Scanner (response);
        int count = 0;
        scan.useDelimiter("");
        StringBuilder sb = new StringBuilder();
        while (scan.hasNext()){
            if (count <20){
                sb.append(scan.next());
                count = count + 1;

            }
            else{
                 String c = scan.next();
                    if (!(c.equals(" "))) {
                        if (sb.charAt(sb.length() - 1) != ' ') {
                            while (!(c.equals(" "))) {
                                if (!scan.hasNext()) {
                                    break;
                                }
                                c = scan.next();
                                sb.append(c);
                            }
                        }
                    }
                    System.out.println(sb);
                        sb = new StringBuilder();
                        count = 0;
            }

        }
    }
}
responder.printGoodbye();

}