用大写分割字符串

时间:2013-02-26 20:40:04

标签: java string

我有一些字符串,我想逐字拆分。它们的格式不同,如:

THIS-IS-MY-STRING
ThisIsMyString
This_Is_My_String
This is my string

我用:

String[] x = str1.split("(?=[A-Z])|[_]|[-]|[ ]");

但是有一些问题:

  1. x数组中的某些元素将为空
  2. 我想要的第一个字符串“这个”但是分裂的结果是“T”,“H”,“I”,“S”
  3. 我应该如何改变分裂以达到我的目的?你能帮我吗?

2 个答案:

答案 0 :(得分:4)

你需要包括后视镜,在这里:

String[] x = str1.split("([-_ ]|(?<=[^-_ A-Z])(?=[A-Z]))");

[-_ ]表示-_或空格。

(?<=[^-_ A-Z])表示前一个字符不是-_,空格或A-Z

(?=[A-Z])表示下一个字符为A-Z

Reference

修改

不幸的是,我无法(我知道)您可以使用split拆分_CITY_ABC,同时避免_CITY或空字符串。

但是,如果不是空的话,你只能处理第一个和最后一个字符串,但这并不理想。

为此,我建议Matcher

String str1 = "_CityCITY_";
Pattern p = Pattern.compile("[A-Z][a-z]+(?=[A-Z]|$)|[A-Za-z]+(?=[-_ ]|$)");
Matcher m = p.matcher(str1);
while (m.find())
   System.out.println(m.group());

答案 1 :(得分:0)

尝试使用Regex.Split()。第一个参数是要拆分的字符串,第二个字符串是正则表达式。希望这会有所帮助。