Как разделить строки с помощью Java? - PullRequest
1 голос
/ 25 ноября 2011

Я пытался разбить строку выглядит так

<a><b><c></c></b></a>

с Java, используя следующий код

String[] s =input.split("[<>]+");
System.out.println(Arrays.toString(s));

и это был вывод

[, a, b, c, /c, /b, /a]

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

Ответы [ 5 ]

4 голосов
/ 25 ноября 2011

Существует альтернативный метод с использованием сопоставления регулярных выражений:

String input = "<a><b><c></c></b></a>";

Pattern p = Pattern.compile("<(.+?)>");
Matcher m = p.matcher(input);

ArrayList<String> s = new ArrayList<String>();

while(m.find())
    s.add(m.group(1));

System.out.println(s.toString());

Вывод: [a, b, c, / c, / b, / a]

1 голос
/ 25 ноября 2011

Если вы используете библиотеку Google Guava, то Splitter имеет удобный способ пропустить пустые строки, используя Splitter#omitEmptyStrings().

1 голос
/ 25 ноября 2011

Это нормально.Если вы хотите удалить первый пустой элемент, используйте следующее:

    String input = "<a><b><c></c></b></a>";
    String[] strs = input.split("[<>]+");
    String[] s =Arrays.copyOfRange(strs, 1, strs.length);

Или перейдите к циклу в поисках пустых элементов.

0 голосов
/ 25 ноября 2011

Если вы уверены в формате ввода, вы можете сделать:

String[] s =input.substring(1).split("[<>]+");
System.out.println(Arrays.toString(s));
0 голосов
/ 25 ноября 2011

Вам нужно будет перебрать все элементы, чтобы избавиться от пустых.

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