2013-07-07 161 views
2

我試圖分裂,如:Twitter Hashtag Is Very COMPLICATED正則表達式用大寫分割字符串和lowercharacter

我可以用正則表達式來做到這一點:TwitterHashtagIsVeryCOMPLICATED

的字符串被splited等之後?

非常感謝您的建議。

+2

你可以嘗試什麼? –

+0

可能重複[正則表達式分割camelCase或TitleCase(高級)](http://stackoverflow.com/q/7593969/1578604)。 – Jerry

回答

5

這應該工作:

str.split("(?<=[a-z])(?=[A-Z])") 

的想法是使用零長度的回顧後小寫字母和大寫字母長度爲零的前瞻。這種構造只會在駱駝情況下的字符串中匹配。

這是demo on ideone

+0

完美的ASCII解決方案;)我不知道推特這麼多,你可以使用除了ASCII字母在推特「ID」以外的其他東西? – fge

+0

@dasblinkenlight非常感謝。它的工作原理和演示非常直觀。 –

1

編輯通過dasblinkenlight的回答(+1爲)強烈啓發。 我只更改爲Unicode類別這裏對Unicode的支持:

String test = "TwitterHashtagIsVeryCOMPLICATED"; 
for (String splitted: test.split("(?<=\\p{Ll})(?=\\p{Lu})")) { 
    System.out.println(splitted); 
} 

輸出:

Twitter 
Hashtag 
Is 
Very 
COMPLICATED 
+0

謝謝@Mena,它的作品 –

+1

@HoaVu歡迎您。正如fge提到的,我不確定是否Unicode字符在散列標籤中完全受支持。如果是,則可以考慮使用Unicode類別,而不是小寫/大寫ASCII字符類。 – Mena

+0

謝謝。你能告訴我任何可以學習正則表達式的文檔和測試它的工具,所以我可以自己掌握正則表達式,而不是在這裏張貼這麼多:)。 –