2012-11-24 29 views
1

我有一个字符串格式化是这样的:Java字符串分割与重复分离

String str = "AA.BBB..CC.DDDD...EE....F.G..H"; 

而且我想用这个作为输出的一个点拆分此字符串:

AA 
BBB 
.CC 
DDDD 
. 
EE 
.. 
F 
G 
.H 

当然str.split("\\.")做不行。

+0

为什么会出现'2 dots'在E和F之间,按顺序?不应该是两条独立线路上的那些线路? –

+0

我认为他想每一个开始,以点结束串。就像是 ”。*。”并且,如果子字符串的开头有多个点,他会将第一个点作为分隔符并将其他字符串包含在字符串中。 –

+0

@DanielaMogini。在这种情况下,输出'DDDD ... EE .... F'不遵循。 –

回答

3

这应该工作:

str.split("(?<!\\.)\\.|(?<=\\.\\.)\\.(?!\\.)") 

该字符串应该在这两个情况下拆分:

  • .没有被其他.
  • .之前不被.得手,并在之前连续2个.
+0

+1非常接近它。但无法得到确切的结果。在第二部分中缺少'(?<= \\。\\。)'。 :) –

+0

谢谢,这工作得很好;) – Enroy