Есть возможность в фильтре задать считывание нескольких разномастных частей? То есть чтобы фильтр позволил заполнить массив
String[] digit=new String[5];
в таком виде:
digit[0] = 31;
digit[1] = "-";
digit[2] = 6;
Знаю как сделать функцией split, но интересует именно возможность разделения через фильтр Pattern.compile("[0-9].+[+-]................")
Второй вопрос.
Можно как-то напрямую присваивать результат от поиска, после фильтра? То есть не выбирать каждый раз через substring.
int start=matcher.start();
int end=matcher.end();
digit[i]=result.substring(start,end);
Опять же, понимаю, что split позволяет это делать, но интересует именно фильтр с различными параметрами, где есть сначала цифры, потом знаки, потом снова цифры. А split позволяет делить только по одному значению, например, пробелу.
package com.javarush.task.task19.task1914;
import java.io.ByteArrayOutputStream;
import java.io.PrintStream;
import java.util.regex.*;
/*
Решаем пример
*/
public class Solution {
public static TestString testString = new TestString();
public static void main(String[] args) {
PrintStream consoleStream = System.out;
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
PrintStream stream = new PrintStream(outputStream);
System.setOut(stream);
testString.printSomething();
String result = outputStream.toString();
System.setOut(consoleStream);
String[] digit=new String[5];
int i=0;
Pattern pattern = Pattern.compile("[0-9].+[+-]");
Matcher matcher = pattern.matcher(result);
while (matcher.find()) {
int start=matcher.start();
int end=matcher.end();
digit[i]=result.substring(start,end);
System.out.println(digit[i]);
i++;
}
}
public static class TestString {
public void printSomething() {
System.out.println("31 - 6 = ");
}
}
}