我试图找到一种很好的方法来让扫描程序使用给定的分隔符作为标记。例如,我想将一段文本拆分为数字和非数字块,所以理想情况下,我只需将分隔符设置为\D
并设置一些标志,如useDelimiterAsToken,但在简要查看API后,我将没有提出任何事情。现在,我不得不求助于使用组合向前看符号/ lookbehinds的分隔符,这是有点痛苦:Java:使用扫描器分隔符作为标记
scanner.useDelimiter("((?<=\\d)(?=\\D)|(?<=\\D)(?=\\d))");
这看起来从一个数字,非数字或反之亦然任何过渡。有没有更健全的方式来做到这一点?
请参阅:http://stackoverflow.com/questions/2206378/how-to-split-a-string-but-also-keep-the-delimiters,也许它有帮助。 – 2010-03-03 11:53:11
问题是,如果我为'\ d'或'\ d +'做了同样的事情,它会在太多的地方匹配 – daltonb 2010-03-03 12:16:58