我试图尽可能地写一个正则表达式:如何在每个大写字母之间添加空白处?
- 添加每个大写字母之间的空格。
- 删除所有数字。
我有文本: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