2016-02-26 53 views
2

我正在嘗試爲我正在執行的程序創建我自己的工具提示,並且我希望工具提示的文本適合放入每行最大字母數是固定的(比如12)。所以現在我想適合這個文本成箱切割文本以適合它在一個框中(工具提示)

String example = "Hello my name is Martin"; //(23 letters) 

例如,請考慮以下字符串。

該字符串應該是這樣的正確格式的文本:

第1行: 「你好,我」

第2行: 「名字是」

3行: 「馬丁」

我真的不知道我該如何解決這個問題。有一個問題我想的東西是每個" "後輸入字符串分割,如:

String[] splittedExample = example.split("\\s+"); 

但我需要一個算法來檢查有多少這些數組內容可以在一行內寫完,直到一個最大達到12。

我對任何其他解決方案也是開放的。

如果有人知道我能做到這一點,那將是非常棒的。另外,我希望這些行存儲在一個字符串數組中。

感謝

+0

那麼你可以後兩個詞分開,因爲你的預期輸出有兩個詞各.. –

+0

都能跟得上這只是一個例子字符串,如果2個字一起有鐵道部比12個字母全概念會失敗 – SyxDuLappen

+0

哦,對不起,沒有讀取12個字符的限制。 –

回答

0

您可以創建一個遞歸函數分裂&包指定長度的輸入字符串。在下面的代碼中,我使用\n作爲分隔符,如果需要,可以更改它。

這裏是代碼片段:

public static void main (String[] args) 
{ 
    /* Input String */ 
    String input = "Hello my name is Martin"; 
    String result = wrapString(input, 12); 

    /* String Array */ 
    String[] strArray = result.split("\n"); 

    /* Print Result */ 
    System.out.println(result); 
} 

/** 
* Wrap String Function 
* Arguments: String, Wrap Size 
**/ 
private static String wrapString(String input, int size) { 
    /* Create Char Array */ 
    char[] inpArr = input.toCharArray(); 
    /* Wrap Logic */ 
    if (inpArr.length > size) { 
     int temp = 0; 
     for (temp = size; temp > 0 && inpArr[temp] != ' '; temp--); 
     if (temp > 0) { 
      /* Left & Right Substrings */ 
      String left = input.substring(0, temp); 
      String right = input.substring(temp + 1); 
      /* Return */ 
      return left + "\n" + wrapString(right, size); 
     } 
    } 
    /* Return */ 
    return input; 
} 

輸出:

Hello my 
name is 
Martin 
1

你可以寫你自己的方法,這樣做:

public static String getLimitedString(String str, int len){ 
    StringBuilder txt = new StringBuilder();    
    while(str.length() > 0){ 
     if(str.length() < len){ 
      txt.append(str.trim()); 
      str = ""; 
     }   
     else if(str.charAt(len) == ' '){ 
      txt.append(str.substring(0, len+1).trim() + "\n"); 
      str = str.substring(len+1); 
     }     
     else{ 
      txt.append(str.substring(0, str.lastIndexOf(' ', len)).trim() + "\n"); 
      str = str.substring(str.lastIndexOf(' ', len)); 
     } 
    } 
    return txt.toString();  
} 

測試:

System.out.println(getLimitedString("Hello my name is Martin", 12)); 

輸出:

Hello my 
name is 
Martin 
相關問題