Как разбить эту строку? - PullRequest
0 голосов
/ 17 июня 2011

Как разбить эту строку?

String s="{hello.World::123}";

в массив перемешивания:

{"hello","World","123"}

с помощью регулярных выражений?

Ответы [ 5 ]

4 голосов
/ 17 июня 2011

Попробуйте:

 String s ="{hello.World::123}";
 System.out.println(Arrays.toString(s.split("[\\.:{}]+")));

РЕДАКТИРОВАТЬ :

Обобщенное решение:

 String s ="{hello.World::123}".replaceFirst("^[\\.:{}]+", " ").trim();
 System.out.println(Arrays.toString(s.split("[\\.:{}]+")));

Из комментариев (@PeterЛоури):

Для конкретного ввода,

 String s ="{hello.World::123}";
 System.out.println(Arrays.toString(s.substring(1).split("[\\.:{}]+")));
1 голос
/ 17 июня 2011

Немного изменив решение Джона, чтобы избежать пустой строки:

String s="{hello.World::123}";
s=s.substring(1, s.length()-1);
System.out.println(Arrays.toString(s.split("[\\.:]+")));
1 голос
/ 17 июня 2011

Извините за неудобства в моем предыдущем ответе.

Вот то, что на самом деле может работать:

String[] a = s.replaceAll("[\\{\\}]", "").split("\\.|::");

Однако это не позволит вам иметь { или } в качестве элементов в списке , но я полагаю, что у вас его нет.

0 голосов
/ 17 июня 2011

Как насчет:

s.split("\\.|::");
0 голосов
/ 17 июня 2011

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

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

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