2

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

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

我用:

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

但是有一些问题:

  1. x 数组中的某些元素将为空
  2. 对于第一个字符串,我想要“THIS”,但拆分的结果是“T”、“H”、“I”、“S”</li>

我应该如何更改拆分以达到我的目的?请你帮助我好吗?

4

2 回答 2

4

您还需要包括look-behind,在这里:

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

[-_ ]手段-_空间。

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

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

参考

编辑:

不幸的是,没有办法(我知道)你可以在避免或空字符串的同时使用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());
于 2013-02-26T20:54:22.390 回答
0

试试 Regex.Split()。第一个参数是要拆分的字符串,第二个字符串是您的正则表达式。希望这可以帮助。

于 2013-02-26T20:44:16.033 回答