java - 使用字符作为扫描仪的起点和终点

标签 java java.util.scanner text-parsing

所以我有一个像这样的文本文件

1 5 8 d 3 5 7 8 d 4 6 7 8 9 d 2 D 2 4 7 9 8 5

我一直在尝试做的是让扫描仪读取,直到它看到第一个“D”,然后处理后面的所有数字,直到它遇到第二个“D”。扫描仪下次查找时会出现此问题起点位于第三个“D”

非常感谢任何帮助。

最佳答案

你可以让the Scanner use "D" as the delimiter :

public static void main(String[] args) {
    String input = "1 5 8 D 3 5 7 8 D 4 6 7 8 9 D 2 D 2 4 7 9 8 5";
    Scanner sc = new Scanner(input).useDelimiter("D");
    while(sc.hasNext()) {
        sc.next(); // "1 5 8", "3 5 7 8", ...
    }
}

不清楚是否要跳过前导数字,但如果要这样做,只需在循环之前调用一次 next() 即可。

关于java - 使用字符作为扫描仪的起点和终点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25826257/

相关文章:

java - 如何在 if/else 语句中检查整数且小于或等于 100

perl - 人们说 “Perl is very good at parsing” 是什么意思?

python - 用 Python 解析文本 : unstructured but similar information with different formatting

java - 接口(interface)中的静态类和非静态类有什么区别?

java - 扫描仪对象具有类属性,而不是在代码初始化中

java - 如何防止小数除法时精度损失?

java - 为什么 Scanner 使用 Scanner#ioException() 而不是抛出异常?

python - 如何在Python串行解析器中确定句子的结尾?

java - JDBC Mysql语法错误

java - 除了使用 GridBagConstraints 之外,还有更精确的方法来放置 JButton 吗?