我正在尝试使用"()()"
方法根据分隔符Scanner.next()
扫描阅读器中的文本。这是我的代码:
public static void main(String[] args)
{
String buffer = "i want this text()()without this text()()";
InputStream in = new ByteArrayInputStream(buffer.getBytes());
InputStreamReader isr = new InputStreamReader(in);
BufferedReader reader = new BufferedReader(isr);
Scanner scan = new Scanner(reader);
scan.useDelimiter("/(/)/(/)");
String found = scan.next();
System.out.println(found);
}
问题是,返回整个缓冲区:
i want this text()()without this text()()
我只希望第一个next()迭代返回:
i want this text
和下一个next()迭代返回:
without this text
我是如何通过仅分隔以()()
结尾的字符串来扫描阅读器的任何建议?
答案 0 :(得分:4)
您的useDelimiter
参数不正确 - 当您尝试转义括号时,您正在使用正斜杠而不是反斜杠。您还需要以Java术语来转义反斜杠:
scan.useDelimiter("\\(\\)\\(\\)");
编辑:您可以使用Pattern.quote
:
String rawDelimiter = "()()";
String escaped = Pattern.quote(rawDelimiter);
scan.useDelimiter(escaped);