Как лучше считывать такие числа по средствам java из строки?

280
24 октября 2017, 00:10

Ниже приведен формат. Есть строки такого вида:

0.0-2.013896591961E-04-1.136868377216E-12 (3 числа)

6.356909871101E-04-2.046363078989E-12 (2 числа)

Как из них можно считать число? Есть ли какой-то встроенный метод java, который парсит такие строки? Или только вручную это можно сделать с помощью, например, регулярных выражений?

Answer 1

Можно использовать для захвата просто регулярное выражение, например такое \-?\d+(?:\.\d+(?:E[\-\+]\d{2})?)?, вот можно проверить его онлайн. Просто проитерировать по множественному захвату этой регуляркой.

Вот полный код на Java, также можно запустить онлайн:

import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Main {
    public static void main(String[] args) {
        String s = "0.0-2.013896591961E-04-1.136868377216E-12 12 22 44";
        Pattern pattern = Pattern.compile("\\-?\\d+(?:\\.\\d+(?:E[\\-\\+]\\d{2})?)?");
        Matcher matcher = pattern.matcher(s);
        while (matcher.find()) {
            String group = matcher.group();
            System.out.println(group);
        }
    }
}
READ ALSO
Как создавать папку внутри директории .Jar

Как создавать папку внутри директории .Jar

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

244
RandomAccessFile медленнее BufferedReader?

RandomAccessFile медленнее BufferedReader?

Здравствуйте, есть файл, в нем хранятся английские слова на 'a' и их перевод сразу на другой сроке

198
Обнулить счетчик в методе java jsf

Обнулить счетчик в методе java jsf

Делаю простой тест, вот метод проверяющий ответы: когда отвечаешь первый раз верно, переводит на следующий вопрос и увеличивает счетчик score,...

370
Как JSF разворачивает jsFunction

Как JSF разворачивает jsFunction

Как на клиенте выглядит jsFunction, после обработки JSF? Также интересует последовательность выполнения: onbegin, action, data, render, oncomplete?

208