2015-01-21 27 views
0

根據UI組件的要求,使用長整數字符串值時,我必須填充固定長度的較小字符串值並組合它們。Java字符串:用於分割長整數的遞歸解決方案將長整數分割爲固定長度的較小部分並將它們合併

Ex:- long String value: AAABBBCCDEEEFFGGGG 

     Fixed length smaller String value: AAA 
             BBB 
             CCD 
             EEE 
             FFG 
             GGG 

爲了使此啓用,我寫了一些實用的方法如下。 我想知道,作爲一個優化解決方案,它是否可以編寫一些遞歸方法?謝謝。

/** 
* @param fullLongString Long String value 
* @param maxLengthOfPart Maximum length of the smaller String 
* @return String result as a short String 
*/ 
public static String getShortString(String fullLongString, int maxLengthOfPart) { 

    if((fullLongString == null) || (fullLongString.trim().equals("")) || (maxLengthOfPart <= 0) || (fullLongString.length() <= maxLengthOfPart)) { 
     return fullLongString; 
    } 

    StringBuilder fullShortString = new StringBuilder(); 
    int numberOfStringParts = fullLongString.length()/maxLengthOfPart; 

    int startIndex = 0; 
    int endIndex = maxLengthOfPart; 

    for(int i = 0; i < numberOfStringParts; i++) { 

     String smallPart = fullLongString.substring(startIndex, endIndex); 

     if(i == 0) { 
      fullShortString.append(smallPart); 
     } else { 
      fullShortString.append("\n").append(smallPart); 
     } 

     startIndex = endIndex; 
     endIndex += maxLengthOfPart; 
    } 

    String remainPart = fullLongString.substring((endIndex - maxLengthOfPart), (fullLongString.length())); 

    if((remainPart != null) && (!remainPart.trim().equals(""))) { 
     fullShortString.append("\n").append(remainPart); 
    } 

    return fullShortString.toString(); 
} 
+2

你的問題不明確。如果你的代碼有效 - 你爲什麼要用遞歸重寫它? – alfasin 2015-01-21 03:21:47

+1

或者,如果您想要優化它,可以嘗試在Code Review中發佈它。 – lxcky 2015-01-21 03:23:00

+0

alfasin - 我需要使用遞歸進行優化,J.Lucky - 感謝您的建議 – Channa 2015-01-21 05:46:40

回答

2

這對我有效。遞歸節省了大量的代碼。

/** 
* @param fullLongString Long String value 
* @param maxLengthOfPart Maximum length of the smaller String 
* @return String result as a short String 
*/ 
public static String getShortString(String fullLongString, int maxLengthOfPart) { 

    if((fullLongString == null) || (fullLongString.trim().equals("")) || (maxLengthOfPart <= 0) || (fullLongString.length() <= maxLengthOfPart)) { 
     return fullLongString; 
    } else { 
     String firstPart = fullLongString.substring(0, maxLengthOfPart); 
     return firstPart + "\n" + getShortString(fullLongString.substring(maxLengthOfPart, fullLongString.length()),maxLengthOfPart); 
    } 

} 
-2

我建議,它有一個SplitterJoiner類的番石榴庫。

使用

public static String splitEqual(String strand, int width) { 
    return Joiner.on('\n').join(Splitter.fixedLength(width).trimResults().split(strand)); 
} 
相關問題