我的字符串格式不方便。这是一个例子:

(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);
}

10-04 12:04