Как отделить строку, используя разделители & ldquo; () {} [] & rdquo; [Дубликат]

Чтобы использовать методы и член объекта, вам сначала нужно создать этот объект. Если вы его не создали (переменная, которая должна содержать объект, не инициализируется), но вы пытаетесь использовать его методы или переменные, вы получите эту ошибку.

Иногда вы можете просто забыть инициализировать .

Отредактировано: new не может вернуть значение null, но исключение огня при ошибке. Давно это было на некоторых языках, но не больше. Спасибо @John Saunders за указание на это.

11
задан user677786 25 March 2012 в 01:29
поделиться

6 ответов

String[] ops = str.split("\\s*[a-zA-Z]+\\s*");
String[] notops = str.split("\\s*[^a-zA-Z]+\\s*");
String[] res = new String[ops.length+notops.length-1];
for(int i=0; i<res.length; i++) res[i] = i%2==0 ? notops[i/2] : ops[i/2+1];

Это должно сделать это. Все прекрасно хранится в res.

33
ответ дан IchBinKeinBaum 31 August 2018 в 16:49
поделиться

Вы можете разбить границу слова с помощью \ b

1
ответ дан Andrew Morton 31 August 2018 в 16:49
поделиться

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

String ops[] = string.split("[a-z]")
// ops == [+, -, *, /, <, >, >=, <=, == ]   

Это, очевидно, не возвращает переменные в массиве. Возможно, вы можете чередовать два раскола (один по операторам, один по переменным)

0
ответ дан Chris White 31 August 2018 в 16:49
поделиться
    String str = "a + b - c * d / e < f > g >= h <= i == j";
    String reg = "\\s*[a-zA-Z]+";

    String[] res = str.split(reg);
    for (String out : res) {
        if (!"".equals(out)) {
            System.out.print(out);
        }
    }

Выход: + - * / & lt; >> = & lt; = ==

4
ответ дан dat_clover 31 August 2018 в 16:49
поделиться

Вы также можете сделать что-то вроде:

String str = "a + b - c * d / e < f > g >= h <= i == j";
String[] arr = str.split("(?<=\\G(\\w+(?!\\w+)|==|<=|>=|\\+|/|\\*|-|(<|>)(?!=)))\\s*");

Он обрабатывает пробелы и слова переменной длины и создает массив:

[a, +, b, -, c, *, d, /, e, <, f, >, g, >=, h, <=, i, ==, j]
-3
ответ дан sQuirel 31 August 2018 в 16:49
поделиться
str.split (" ") 
res27: Array[java.lang.String] = Array(a, +, b, -, c, *, d, /, e, <, f, >, g, >=, h, <=, i, ==, j)
16
ответ дан user unknown 31 August 2018 в 16:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: