我编写了此正则表达式([0-9]{2}:){2}[0-9]{2},[0-9]{3} -> ([0-9]{2}:){2}[0-9]{2},[0-9]{3}
来匹配诸如00:16:31,600 -> 00:16:35,700
之类的srt时间格式,当我像这样使用它时,它工作得很好:someString.matches(timeSpanPattern)
但是当我在hasNext(pattern)
中使用它时,如下面的代码,它总是返回false并且我认为这是因为->
之前和之后的空白。有什么替代方法或代码可以防止这种情况吗?我尝试了useDelimiter
函数,但是没有用(也许我使用的函数不正确)
final String timeSpanPattern = "([0-9]{2}:){2}[0-9]{2},[0-9]{3} -> ([0-9]{2}:){2}[0-9]{2},[0-9]{3}";
.
.
.
Scanner i = new Scanner(System.in).useDelimiter("\n");
while (i.hasNext(timeSpanPattern)) {
line = i.next(timeSpanPattern);
forbiddenTimes.add(line);
}
.
.
.
最佳答案
重新阅读您的问题,我发现了实际的问题:
Scanner i = new Scanner(System.in).useDelimiter(System.lineSeparator());
在UNIX系统上,行分隔符为
"\n"
;在Microsoft Windows系统上,行分隔符为"\r\n"
。关于java - Java扫描器hasnext(pattern)与空白冲突,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16606999/