簡體   English   中英

需要將字符串輸出格式化為一定的長度,如何將字符串中的每個字符計數為設置的限制

[英]Need to format string output to certain length, how do I count each char in a string to a set limit

我需要在不格式化輸入字符串本身的情況下限制輸出字符串的長度。 我想對讀取到任意限制的字符串的每個字符進行計數(比如說20),這時它將開始在新行上打印。 但是,我還需要單詞以保持連字符,沒有連字符或其他任何東西,因此我認為一旦達到計算每個字符的地步,我就可以引入一個邏輯語句,這樣它才會在出現空格后才開始新行20個限制。

這可能嗎?

在下面的徽章幫助下,這是我現在的位置:

碼:

    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();
}

編輯:修復了不打印整個句子的輸出問題(盡管它仍然沒有打印出句子的結尾-'configuration。'僅顯示為'configurati')

誰能幫我格式化它,以便它在到達空格之前不會打印新行?

EDIT2:多虧了Anuswadh,我離我越來越近了! 盡管新問題是它似乎正在刪除字符。

當我輸入此文本時:

我於1874年11月30日出生於Spencer家族分支下的Marlborough公爵家族,您可能認識我的遠親Diana Spencer。

它返回以下文本:

我於1874年11月30日出生在斯潘塞家族的一個分支馬爾克斯伯爵公爵(Dukes f Marlborough)家族中-您可能知道我的遠親狄娜(Dina)。

您可以構造一個傳遞字符串的Scanner對象。

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 
}

您可以查看下一個字符是否為空格,如果不是,請進行迭代,直到到達為止。

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();

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM