Перебор строки Поиск специальных символов. Использование регулярных выражений - PullRequest
0 голосов
/ 29 января 2020

Моя цель - перебрать строку и извлечь экземпляры определенных символов.

В идеале я хотел бы использовать Pattern и Matcher.

Например.

String str = "10 + 10 + 10";

Как бы я go узнал, если бы я хотел создать код, который бы определял, является ли часть строки числом или оператором +, и, в свою очередь, сохранял эту часть строки в массиве, в зависимости от того, что это и затем, следовательно, переходить к следующему символу?

Мне известно, что я должен использовать регулярные выражения, но не совсем так, как я должен перебирать строку и искать регулярные выражения слева направо.

1 Ответ

0 голосов
/ 02 февраля 2020

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

public class OperatorsAndNumbers{
    static List<String> parts = new ArrayList<>();
    public static void main( String[] args ){
        String str = "10+10+10";
        Pattern p = Pattern.compile( "(\\d+)|([+-])" );

        /* Run the loop to match the patterns iteratively. */
        Matcher m = p.matcher( str );
        while( m.find() ) {
            handle( m.group() );
        }

        System.out.println( parts );
    }

    /** Do whatever is to be done with detected group. You may want to add them to separate lists or
     * an operation tree, etc. In this example, it simply adds it a list. */
    private static void handle( String part ){
        parts.add( part );
    }

}
...