我有一些字符串,我想逐字拆分。它们的格式不同,如:
THIS-IS-MY-STRING
ThisIsMyString
This_Is_My_String
This is my string
我用:
String[] x = str1.split("(?=[A-Z])|[_]|[-]|[ ]");
但是有一些问题:
我应该如何改变分裂以达到我的目的?你能帮我吗?
答案 0 :(得分:4)
你需要包括后视镜,在这里:
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());
答案 1 :(得分:0)
尝试使用Regex.Split()。第一个参数是要拆分的字符串,第二个字符串是正则表达式。希望这会有所帮助。