Java Regix 尝试从文本文件中读取子字符串

标签 java text

我正在尝试从充满垃圾的文本中读取某些有用的信息,但它是一些传感器读取的信息。我从这段代码中丢失了很多有用的信息

像'NH3水平 l 是:9.9977'

必须有比这更有效的方法,有人可以帮我吗

import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;
public class sensorclean {
final static String Array[] = new String[1000];
    static int g = 0;

public static void main(String[] args) {

File file = new File("C:/Users/Omar/Desktop/datatest.txt");
try {
Scanner scanner = new Scanner(file);
while (scanner.hasNextLine()) {
String line = scanner.nextLine();
String newline=ignoreComments(line);
if(newline!=null)
    Array[g] = newline;
    g++;
}

for(int i =0; i<Array.length;i++){
    if(Array[i]!=null)

    {

        Array[i] = Array[i].trim();

    System.out.println(Array[i]);

    }
}

}

 catch (FileNotFoundException e) 
{
e.printStackTrace();
}
}
private static String ignoreComments(String line) {
String result_line=null;

int upto=line.indexOf('#');
int upto1 = line.indexOf('ë');
int upto2 = line.indexOf('~');
int upto3 = line.indexOf('€');
int upto4 = line.indexOf('?');
if((upto!=0&&upto>0)&&(upto1!=0&&upto1>0)){
result_line=line.substring(1, upto4);
System.out.println("here");
}
else{
if(upto<0 && upto1<0 && upto2<0 && upto3<0 ){
result_line=line;
}/*else{
result_line="";
}*/
}
return result_line;

}
}

我的传感器读取温度并将其存储在 .txt 文件中。但它在里面添加了垃圾 我正在开发一个java,从中提取有用的信息

这是文件内容的示例

ë~^€}3¢@iw4R#}3¢@iw CO level is: 101.0831, CO2 level is: 375.2046, NH3 leve l is: 9.9977 ?~O€}3¢@isGR# -mac:0013A20040691673,-time:Wednesday, 12/11/14 - 14:06.56, E~G€}3¢@isGR#}3¢@is TEMP: 51.9354, HUMIDITY is: 9.6129, bat: 63%

~_€}3¢@isGR#}3¢@is CO level is: 106.1330, CO2 level is: 374.7616, NH3 leve l is: 86.7625 ?~O€}3¢@if:R# -mac:0013A20040691666,-time:Wednesday, 12/11/14 - 14:09.20, é~I€}3¢@if:R#}3¢@if TEMP: 280.0000, HUMIDITY is: 17.7677, bat: 96% I~^€}3¢@if:R#}3¢@if CO level is: 128.8912, CO2 level is: 375.6922, NH3 leve l is: 9.9977 E~O€}3¢@iw2R# -mac:0013A20040691677,-time:Wednesday, 12/11/14 - 14:12.11, ?~H€}3¢@iw4R#}3¢@iw TEMP: 20.3225, HUMIDITY is: 19.3161, bat: 87 % ?~^€}3¢@iw1R#}3¢@iw CO level is: 101.0831, CO2 level is: 375.1160, NH3 leve l is: 9.9977 ?

这些垃圾并不总是一样的,它在变化

这是我当前的代码

最佳答案

它仍然不是基于正则表达式:

public static void main(String[] args) throws Exception {
    StringBuilder tmp = new StringBuilder();
    StringBuilder res = new StringBuilder();
    Scanner sc = new Scanner(new File("test.txt"));
    while (sc.hasNextLine()) {
        String line = sc.nextLine();
        boolean isRubbish = false;
        for (char c : line.toCharArray()) {
            if (c == ' ') {
                if (!isRubbish) {
                    res.append(tmp).append(' ');
                } else {
                    isRubbish = false;
                }
                tmp.setLength(0);
            } else if (isRubbish(c)) {
                isRubbish = true;
            } else {
                tmp.append(c);
            }
        }
    }
    System.out.println(res);
}

private static boolean isRubbish(char c) {
    return "#^}@?".indexOf(c) > -1;
}

关于Java Regix 尝试从文本文件中读取子字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13537738/

相关文章:

ubuntu - 将星期几添加到文本文件中的日期

Java - If 语句不起作用(比较字符串)

java - 提供测试作为库的一部分

java - 在java中按索引对数组列表的数组列表进行排序

在客户端/服务器之间同步文本的算法

android - 使用另一个类中的编辑文本中的文本设置 TextView 中的文本

java - 在 Java 中,当我调用 OutputStream.close() 时,我是否总是需要先调用 OutputStream.flush()?

java - Spring-Kafka消费者收不到消息

c++ - 致命字符串错误

java - 语音转文本 api/库