2013-07-04 56 views
0

使用正則表達式我必須拆分字符串模式並將其展開。在Java中使用正則表達式分割字符串模式

例如:

String Pattern = "rue Richard2" -----> in 2 string 
Substring1 = "rue Richard" , Substring2 = "2" 

但對於像「街 - 理查德2-5」更復雜的字符串模式,我必須拆分並展開:

Substring1 = "rue-Richard " , Substring2 = "2" 
Substring1 = "rue-Richard " , Substring2 = "3" 
Substring1 = "rue-Richard " , Substring2 = "4" 
Substring1 = "rue-Richard " , Substring2 = "5" 

但另一個更復雜的字符串模式像「街 - 理查德2,5,7,11」,我必須拆分並展開:

Substring1 = "rue-Richard." , Substring2 = "2" 
Substring1 = "rue-Richard." , Substring2 = "5" 
Substring1 = "rue-Richard." , Substring2 = "7" 
Substring1 = "rue-Richard." , Substring2 = "11" 
+0

正則表達式看起來不是正確的工具。你可以使用外部庫嗎? – fge

+0

你能解釋一下你的問題嗎? – user35443

+0

有一點是肯定的:這個問題不能用一個正則表達式來解決。也許你可以使用正則表達式來分割你的字符串(根據你需要的一個明確定義的規範),但是你需要一些代碼來擴展你的街道/ housnumber對。 – lweller

回答

0

的正則表達式,這裏將沒有幫助,罪ce你有兩個任務要做:

  • 從數字分開的非數字;
  • 分析數字。

這一個簡單的解決方案是使用Guava's CharMatcher

// DIGIT matches all unicode digits, we don't want that 
private static final CharMatcher DIGITS = CharMatcher.DIGIT 
    .and(CharMatcher.ASCII); 

// find first digit index 
final int index = DIGITS.indexIn(input); 
input.substring(0, index); // part without the digits 
input.substring(index); // part with digits 

然後,你「只」要分析數字的一部分。

+0

謝謝你的提示! – user2547702

相關問題