2015-11-13 35 views
3

我想在一定長度後分割一個字符串。如何在一定長度之後使用拆分字符串?

比方說,我們有「消息」

Who Framed Roger Rabbit 

斯普利特這樣的字符串:

"Who Framed" " Roger Rab" "bit" 

而且我想分裂時,「消息」變量超過10

我目前的分割代碼:

private void sendMessage(String message){ 

// some other code .. 

String dtype = "D"; 
int length = message.length(); 
String[] result = message.split("(?>10)"); 
for (int x=0; x < result.length; x++) 
     { 
      System.out.println(dtype + "-" + length + "-" + result[x]); // this will also display the strd string 
     } 
// some other code .. 
} 
+0

你目前獲得的輸出是什麼? –

+0

你想分開什麼第11個字符?如果消息是'abcdefghijklmnop',應該是OP嗎? – TheLostMind

+0

看看[N-gram從一個句子生成](http://stackoverflow.com/questions/3656762/n-gram-generation-from-a-sentence) – aioobe

回答

14

我不會爲這個在所有使用String.split

String message = "Who Framed Roger Rabbit"; 
for (int i = 0; i < message.length(); i += 10) { 
    System.out.println(message.substring(i, Math.min(i + 10, message.length()); 
} 
+0

這實際上應該是正確的路要走。它既正確又高效:) – TheLostMind

+0

這個效果很好!你能解釋「message.substring」部分是如何工作的嗎? – newborn

+0

我真的不知道該說什麼。它獲取字符串的第i個字符和第(i + 10)個字符之間的子串,或者如果第一個字符到達字符串的末尾。 –

0

這會爲你工作。適用於任何長度的消息。

public static void main(String[] args) { 
    String message = "Who Framed Roger Rab bit"; 
    if (message.length() > 10) { 
     Pattern p = Pattern.compile(".{10}|.{1,}$"); 
     Matcher m = p.matcher(message); 
     while (m.find()) { 
      System.out.println(m.group()); 
     } 
    } 
} 

O/P:

Who Framed 
Roger Rab 
bit 
+0

雖然它會跳過字符[不匹配'.'](http://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html#lt)。 –

+0

'.'表示*任何* :) – TheLostMind

+0

這意味着「任何字符(可能或可能不匹配行終止符)」,根據javadoc。 –

0

你可以使用正則表達式查找,而不是一個分裂 是這樣的: [\w ]{0,10}

Pattern p = Pattern.compile("[\\w ]{0,10}"); 
Matcher m = p.matcher("who framed roger rabbit"); 
while (m.find()) { 
    System.out.println(m.group()); 
} 
+0

爲什麼不是'「。{,10}」'?或''[\ s \ S] {,10}「'? –

+0

我認爲它正在尋找文字,但如果它是任何字符,'.'會更好。 –

+0

請參閱我對Vinod關於爲什麼它不一定匹配任何字符的答案的評論。 –

3

我認爲安迪的解決方案將是最好在這種情況下,但如果你想使用正則表達式和分割你可以做

"Who Framed Roger Rabbit ".split("(?<=\\G.{10})"); 
相關問題