удаление пустых строк с помощью регулярных выражений Java - PullRequest
1 голос
/ 12 мая 2011

У меня есть интересная строка, которую я хочу правильно разбить на строковый массив.Эта строка выглядит следующим образом.

String test="?[32,120],x1y1,[object pieceP1],null]";

Теперь у меня есть это регулярное выражение для атаки на это.

String delims = "[?,\\[\\]]";

Теперь результаты разбиения его с использованием этого кода

String[] tokens = mapString.split(delims);

дает этот результат

->
->
32
120
->
x1y1
->
object pieceP1
->
null

где стрелки - пустые строки.

Как изменить это регулярное выражение, чтобы не было пустых строк?

Заранее большое спасибо.

~ Selcuk

Ответы [ 3 ]

2 голосов
/ 12 мая 2011

String delims = "[?,\\[\\]]+"; // [] +

см. Жадные квантификаторы часть в Сводка конструкций регулярного выражения из Pattern

но ведущий пустой элемент все еще там.

2 голосов
/ 12 мая 2011

Вы можете использовать класс Google Guava Splitter, чтобы облегчить это: http://guava -libraries.googlecode.com / svn / tags / release09 / javadoc / com / google / common / base / Splitter.html

Splitter.omitEmptyStrings() должны сделать работу.

1 голос
/ 12 мая 2011

Попробуйте это

public class Regex 
{
    public static void main(String[] args) 
    {
        String []split = "?[32,120],x1y1,[object pieceP1],null]".split("([?,\\[\\]])+");
        for (int i = 0; i < split.length; i++) {
            System.out.println("'"+split[i]+"'");
        }
    }
}

Если ваша тестовая строка начинается с разделителя, то индекс 0 массива всегда будет пустой строкой.Вы можете поставить чек на это, как это if(split[0].length == 0) continue;

>>Output

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