Как найти длинное двойное число в строке java - PullRequest
1 голос
/ 08 мая 2020

Я пытаюсь извлечь значение сквозной задержки, которое существует в каждой строке текстового файла. Я использовал регулярное выражение, чтобы получить только число в конце каждой строки, но я получил ошибку для регулярного выражения, которое:

недопустимый escape-символ

кроме того, Мне нужно открыть файл, чтобы взять каждую строку, извлечь значение задержки конца и сохранить его в другом текстовом файле (все извлеченные задержки конца конца).

Вот мой код:

import java.awt.Desktop;
import java.io.File;
import java.io.IOException;
import javax.swing.filechooser.FileSystemView;

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 *
 * @author DevAdmin
 */
public class extarctor {

    public static final String s_example = "sender id: 116/sequence number: 117/depth: 443/sending time: 4/23/2020 2:08:54 AM/data: Hello I am SN: 116 this is event # 117 from my sideEnd-End Delay is:2.74550137092987E-05delay registered @ Sink: 621.932901880787";

    public static void main(String[] args) throws IOException {
        //text file, should be opening in default text editor
        File file = new File(FileSystemView.getFileSystemView().getHomeDirectory().getAbsolutePath()+ "/res/End-End-Delay.txt");

        //first check if Desktop is supported by Platform or not
        if(!Desktop.isDesktopSupported()){
            System.out.println("Desktop is not supported");
            return;
        }

        Desktop desktop = Desktop.getDesktop();
        if(file.exists()) System.out.println("Good, keep going!");

        System.out.println(s_example.matches("\d+\.\d+$"));



    }


}

1 Ответ

1 голос
/ 08 мая 2020

Используйте Matcher::group для извлечения необходимого числа.

Демо:

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Main {
    public static void main(String[] args) {
        String s_example = "sender id: 116/sequence number: 117/depth: 443/sending time: 4/23/2020 2:08:54 AM/data: Hello I am SN: 116 this is event # 117 from my sideEnd-End Delay is:2.74550137092987E-05delay registered @ Sink: 621.932901880787";

        Pattern pattern = Pattern.compile("\\d+.\\d+$");
        Matcher matcher = pattern.matcher(s_example);
        while (matcher.find()) {
            System.out.println(matcher.group());
        }
    }
}

Вывод:

621.932901880787
...