Java 替换为空白

Java 替换为空白,java,Java,我以前做过,但现在我遇到了一个不同的问题。我只想提取.txt文件中“家庭作业1:89”结尾的数字。如前所述,我通常使用”.replaceAll(“[\D]”,“)”*。但如果我这次这样做,冒号前的数字(示例中为1)将保持不变。。。我看不出有什么解决办法 应该是这样的: while (dataSc.hasNextLine()) { String data = dataSc.nextLine(); ArrayData.add(i,

我以前做过,但现在我遇到了一个不同的问题。我只想提取.txt文件中“家庭作业1:89”结尾的数字。如前所述,我通常使用”.replaceAll(“[\D]”,“)”*。但如果我这次这样做,冒号前的数字(示例中为1)将保持不变。。。我看不出有什么解决办法

应该是这样的:

       while (dataSc.hasNextLine()) {
              String data = dataSc.nextLine();
              ArrayData.add(i, data);

         if (data.contains("Homework ")) {
            idData.add(a, data);
            idData.set(a, (idData.get(a).replaceAll("[\\D]", "")));

输出是一个新字符串,只有“89”…

谢谢您编辑您的问题

如果你只是想在有“家庭作业”这个词的时候结束,并且你可以依靠一致的格式,那么你可以做以下事情:

String[] tokens = data.split(": ");
System.out.println(tokens[1]);
因此,如果您查看代码,您可能希望将其放在if语句中,在该语句中,您试图从数据中仅获取冒号后面的数字

代码的作用是将字符串分解为多个组件,在看到“:”时将其分解

在您的“家庭作业1:89”示例中,它会将您的数据分成两个“标记”:

1:“家庭作业1”

2:“89”

因此,当访问令牌数组时,我们访问变量
令牌[1]
,因为索引从0开始。

使用下面的代码

1) String str="Homework 1: 89";
        str = str.replaceAll("\\D+","");
        2) String str="sdfvsdf68fsdfsf8999fsdf09";
           String numberOnly= str.replaceAll("[^0-9]", "");
        System.out.println(numberOnly);

你能用你尝试的代码编辑你的问题吗?请输入、输出和预期输出。如果你那样做的话,我们可以提供更多帮助。谢谢,如果我明白你想要什么,你可以简单地用“:”分隔并获得第二个令牌。如果line=“家庭作业1:89”,那么您可以执行
line.split(“:”)
,它将是返回数组的第二个元素。我认为您应该看看正则表达式,因为它们可能是您家庭作业的重要部分:我看到了背后的逻辑,但我有点迷路了。。。我到底需要把第一行放在哪里。我想这是代码中的一般用法,对吗?@Heneko扩展了我的答案,让我知道它是否足够。嗯。。因此,我需要做的是使用您的代码片段,只将令牌[1]发送到我要存储值的ArrayList array.add(令牌[1]),我相信是这样的:)我在java上没有足够的刷新能力来了解if语句中的第二行的功能,但是是的,您只需要执行
idData.add(令牌[1])。如果它有效并且你喜欢它,请接受答案:)它如何解决OP问题?这和OP现在的做法完全一样。您只需将
[\\D]
重写为
\\D
[^0-9]
,在本例中,它们表示相同的内容。