2017-10-16 13 views
1

私は私の最大許容される文字の最後のスペースで文字列を分割しようとしています:分割MAX文字の最後のスペースを持つString

期待:

文字列名=「ジョン・デヴィッドゲッタマーク・ヘンリーAnthoneyサム ";許可

マックスキャラクター:

だから、それはのように返す必要があります:

John David Guetta MarkHenry 
Anthoney Sam 

実際の結果:

John David Guetta MarkHenry An 
thoney Sam 

コード:

public static List<String> splitByLength(String str, int n) { 
    List<String> returnList = new ArrayList<>(); 
    StringBuilder sb = new StringBuilder(); 

    for (int i = 0; i < str.length(); i++) { 
     if (i > 0 && (i % n == 0)) { 
      returnList.add(sb.toString()); 
      sb = new StringBuilder(); 
     } 

     sb.append(str.charAt(i)); 
    } 
    if (StringUtils.isNoneBlank(sb.toString())) { 
     returnList.add(sb.toString()); 
    } 
    return returnList; 
} 

答えて

1

あなたは30文字まで受け入れ、正規表現を使用することができます。

String name = "John David Guetta MarkHenry Anthoney Sam"; 
Pattern p = Pattern.compile(".{1,30}(\\s+|$)"); 
Matcher m = p.matcher(name); 
while(m.find()) { 
    System.out.println(m.group().trim()); 
} 

(\\s|$)はスペース上または最初の文字列の末尾に到達すると、どちらか破ります。

+0

私は1000回upvoteできればいいと思う..私の時間を節約してくれてありがとう... –

1

私はいつもここで、それは難しいと面倒な正規表現を使用して見つけることは、私は

private static void splitByLength(String str, int n) { 
    String newStr = ""; 
    int splitIndex = 0; 
    for (int i = 0; i < str.length(); i++) { 
     if (str.charAt(i) != ' ') {  
      newStr = newStr + str.charAt(i); //Keep adding chars until you find a space 
      if (newStr.length() > n) { //If newStr's length exceeds 'n', break the loop 
       break; 
      } 
     } else { 
      splitIndex = i; //Store the last space index 
      newStr = newStr + ' '; 
     } 
    } 
    System.out.println(str.substring(0, splitIndex).trim()); //Use the splitIndex to print a substring 
    System.out.println(str.substring(splitIndex, str.length()).trim()); 
} 
-1

たぶん面白い

String name = "John David Guetta MarkHenry Anthoney Sam"; 
    StringBuilder myName = new StringBuilder(name); 
    if(name.length() > 30) { 
     myName.setCharAt(27, '\n'); 
    } 
    System.out.println(myName); 

出力に使用するソリューションです:

ジョン・デヴィッドゲッタマーク・ヘンリーを

アンハニーサム

関連する問題