我以前做过这个,但现在遇到了不同的问题。我想只提取 “Homework 1:89” 中的数字,它位于 .txt文件中。如上所述我通常使用 “。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”......
答案 0 :(得分:2)
感谢您编辑问题。
如果你只是想在家庭作业这个词的时候试图结束,你可以依靠一致的格式,你可以做到以下几点:
String[] tokens = data.split(": ");
System.out.println(tokens[1]);
因此,如果您查看代码,您可能希望将其放在if语句中,在该语句中,您只想获取冒号后的数字。
代码的作用是将字符串分解为多个组件,只要看到“:”就会破坏它。
在你的“家庭作业1:89”的例子中,它会将你的数据分成两个“代币”:
1:“家庭作业1”
2: “89”
因此,当访问tokens数组时,我们访问变量tokens[1]
,因为索引从0开始。
答案 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);