java一个字符串里面是数字和换行符,如何把这些数字单独取出来

云端观云 2018-03-26 12:11:57

如图:是这个字符串打印出来的情况,我需要这些数字,如何把他们提取出来
...全文
670 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复

String str="hh\n1\n22\n798.809\n0.89\n";
String regex="\\d+(?:\\.\\d+)?";
Matcher m=Pattern.compile(regex, Pattern.MULTILINE).matcher(str);
List<String> result=new ArrayList<String>();
while(m.find()){
result.add(m.group());
}

结果:
  • 打赏
  • 举报
回复
你直接贴字符串不行么
AMX50B 2018-03-26
  • 打赏
  • 举报
回复
public class TestSplit { public static void main(String[] args) { String str = "5\n\r0.6"; String[] params = str.split("\n\r"); for (String param:params ) { double target = Double.parseDouble(param); System.out.println(target); } } }
云端观云 2018-03-26
  • 打赏
  • 举报
回复
引用 8 楼 zp809360394 的回复:
其实3L的答案比我写的精简的很多。也挺实用的。 需要注意的一点是正则中包含的windows系统和Linux系统的换行符问题。 Linux系统换行是 \n Windows系统的是 \r\n 这一点可以通过JDK中已过时的方法 System.lineSeparator() 查看。 判断系统的方法
    private static boolean isWindowsOS() {
        boolean isWindowsOS = false;
        String osName = System.getProperty("os.name");
        if (osName.toLowerCase().contains("windows")) {
            isWindowsOS = true;
        }
        return isWindowsOS;
    }
[quote=引用 7 楼 qq_38865597 的回复:] [quote=引用 5 楼 zp809360394 的回复:] 运行结果
刚才你打的时候我正在结贴,没看到,还是要多谢哦[/quote][/quote] 嗯嗯,又学到好多呢
  • 打赏
  • 举报
回复
其实3L的答案比我写的精简的很多。也挺实用的。 需要注意的一点是正则中包含的windows系统和Linux系统的换行符问题。 Linux系统换行是 \n Windows系统的是 \r\n 这一点可以通过JDK中已过时的方法 System.lineSeparator() 查看。 判断系统的方法
    private static boolean isWindowsOS() {
        boolean isWindowsOS = false;
        String osName = System.getProperty("os.name");
        if (osName.toLowerCase().contains("windows")) {
            isWindowsOS = true;
        }
        return isWindowsOS;
    }
引用 7 楼 qq_38865597 的回复:
[quote=引用 5 楼 zp809360394 的回复:] 运行结果
刚才你打的时候我正在结贴,没看到,还是要多谢哦[/quote]
云端观云 2018-03-26
  • 打赏
  • 举报
回复
引用 5 楼 zp809360394 的回复:
运行结果
刚才你打的时候我正在结贴,没看到,还是要多谢哦
云端观云 2018-03-26
  • 打赏
  • 举报
回复
感谢1L和三楼
  • 打赏
  • 举报
回复
运行结果
  • 打赏
  • 举报
回复
主要利用 BufferedReader 的 readLine()。 按照你的格式,自动过滤第一行的OK 注意捕获 NumberFormatException 数字转换异常。
测试TXT内容:


package org.bklab.vaadin.io;

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;

public class ReadSingleLineNumber {

public ArrayList<Double> read() {
ArrayList<Double> numbers = new ArrayList<>();
BufferedReader br;
String filePath = "C:\\Users\\Broderick\\Desktop\\num.txt";
try {
br = new BufferedReader(new FileReader(filePath));
String s = br.readLine();
while (s != null){
try {
numbers.add(Double.parseDouble(s));
} catch (NumberFormatException ignore){}
s = br.readLine();
}
} catch (IOException e) {
e.printStackTrace();
}

if(numbers != null && numbers.size() > 0) {
numbers.forEach(d -> System.out.println(d));
}


return numbers;
}

public static void main(String[] args) {
new ReadSingleLineNumber().read();
}

}

62,621

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧