我的字符串格式不方便。这是一个例子:
(Air Fresheners,17)->(Chocolate Chips,14)->(Juice-Frozen,24)
我需要遍历此字符串并仅提取括号中的第一项。因此,使用上面的代码段作为输入,我希望代码返回:
Air Fresheners
Chocolate Chips
Juice-Frozen
请注意,某些项目的名称中有
-
。这些应保留并包含在最终输出中。我正在尝试使用:Scanner.useDelimiter(insert regex here)
...但是我没有运气。其他完成任务的方法也不错,但请保持相对简单。
最佳答案
试试这个
使用正则表达式基于)->(
String s="(Air Fresheners,17)->(Chocolate Chips,14)->(Juice-Frozen,24)";
Pattern regex = Pattern.compile("\\)->\\(");
Matcher regexMatcher = regex.matcher(s);
int i=0;
while (regexMatcher.find()) {
System.out.println(s.substring(i+1,regexMatcher.start()));
i=regexMatcher.end()-1;
}
System.out.println(s.substring(i+1,s.length()-1));
尝试
String.split()
方法String s = "(Air Fresheners,17)->(Chocolate Chips,14)->(Juice-Frozen,24)";
for (String str : s.substring(1, s.length() - 1).split("\\)->\\(")) {
System.out.println(str);
}