我正在尝试使用split()
来获取此输出:
Colour = "Red/White/Blue/Green/Yellow/"
Colour = "Orange"
......但是没有成功。我做错了什么?
基本上我匹配最后一个/
并在那里拆分字符串。
String pattern = "[\\/]$";
String colours = "Red/White/Blue/Green/Yellow/Orange";
Pattern splitter = Pattern.compile(pattern);
String[] result = splitter.split(colours);
for (String colour : result) {
System.out.println("Colour = \"" + colour + "\"");
}
答案 0 :(得分:3)
您需要在最后 /
上拆分字符串。与最后/
匹配的正则表达式为:
/(?!.*/)
说明:
/ : A literal /
(?!.*/) : Negative lookahead assertion. So the literal / above is matched only
if it is not followed by any other /. So it matches only the last /
答案 1 :(得分:1)
怎么样:
int ix = colours.lastIndexOf('/') + 1;
String[] result = { colours.substring(0, ix), colours.substring(ix) };
(编辑:更正为在第一个字符串末尾包含尾随/
。)
答案 2 :(得分:1)
您的模式不正确,您放置$
表示必须以/
结尾,删除$
并且它应该可以正常工作。
虽然我们在这,但你可以使用String.split
String colours = "Red/White/Blue/Green/Yellow/Orange";
String[] result = colours.split("\\/");
for (String colour : result) {
System.out.println("Colour = \"" + colour + "\"");
}