Я пытаюсь разбить свою строку на несколько символов в методе split (), но он не работает - PullRequest
0 голосов
/ 04 августа 2020

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

String str = "sdef@srdfsrd[es[edf@edfv";
String[] arrOfStr = str.split("\\@\\["); 
for (String a : arrOfStr) 
{
  System.out.println(a);
}

вывод:

sdef@srdfsrd[es[edf@edfv

ожидаемый результат:

sdef
srdfsrd
es
edf
edfv

Та же проблема для:

String[] arrOfStr = str.split(",:");  //not splitting the word at all

Ответы [ 2 ]

4 голосов
/ 04 августа 2020

"\\@\\[" соответствует @[, что означает не в вашей строке. Измените свой RegEx на "[@\\[]", который является классом символов - это означает, что он будет разделен на @ или [.

См. Демонстрацию здесь :)

1 голос
/ 04 августа 2020

Используйте "@|\\[ вместо \\@\\[

Обратите внимание, что в шаблоне регулярного выражения | работает как OR, т.е. используя "@|\\[, вы указываете коду разделить данную строку либо на @ OR на [

В качестве альтернативы вы можете использовать [@\\[], где [] указывает классы символов .

Демо:

public class Main {
    public static void main(String[] args) {
        String str = "sdef@srdfsrd[es[edf@edfv";
        String[] arrOfStr = str.split("@|\\[");
        for (String a : arrOfStr) {
            System.out.println(a);
        }
    }
}

Вывод:

sdef
srdfsrd
es
edf
edfv
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...