我試圖儘可能地寫一個正則表達式:如何在每個大寫字母之間添加空白處?
- 添加每個大寫字母之間的空格。
- 刪除所有數字。
我有文本:ClassNameOne839
,我想要得到的文本:Class Name One
有一個庫函數做呢?或任何正則表達式?
我試圖儘可能地寫一個正則表達式:如何在每個大寫字母之間添加空白處?
我有文本:ClassNameOne839
,我想要得到的文本:Class Name One
有一個庫函數做呢?或任何正則表達式?
您可以使用replaceAll()
呼叫組合是這樣的:
String text = "ClassNameOne839";
String cleanText = text.replaceAll("\\d+", "").replaceAll("(.)([A-Z])", "$1 $2");
這首先刪除所有號碼,然後之前的所有大寫字母是不是在String
的開頭添加一個空格。 $1
和$2
是對正則表達式的第一個和第二個的引用。
以下正則表達式[A-Z][a-z]+(?=[A-Z\s\b0-9])
匹配每個單獨的大寫字母后跟另一個大寫字母,空格字符或數字。只需打印每個結果一排與它後面的空間和你設置
編輯:這是ofcourse給你的大寫名稱不包含奇怪的字符,使用將是這樣的:
Matcher matcher = Pattern.compile("[A-Z][a-z]+(?=[A-Z\s\b0-9])").matcher(input);
while(matcher.find()) {
string = string + matcher.group();
}
Sytem.out.println(string);
String result = "ClassName399".replaceAll("\\d", "").replaceAll("([A-Z])", "$1 ");
第一個表達式將檢測所有整數的字符串(\\d
),並刪除它們,第二查找任何大寫字母(使用範圍運算符[]
),然後採取什麼你找到$1
後添加一個空格它。
有關正則表達式的更多信息,請參見Java Pattern類。
org.apache.commons.lang.StringUtils.splitByCharacterTypeCamelCase
做幾乎你所需要的一切;) 試試這個:
cleanText = StringUtils.join(StringUtils.splitByCharacterTypeCamelCase(in.replaceAll("\\d+", "")), " ");
應該比正則表達式快得多。
我懷疑有一個庫。嘗試寫正則表達式,我們可能會幫你 –
可能重複http://stackoverflow.com/q/272633/2006839 – Lakshmi
String s = MyDocumentFileIsHere; String textWithSpace = s.replaceAll(「(。)([A-Z])」,「$ 1 $ 2」); holder.titleTxt.setText(textWithSpace); – Faakhir