Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / String split / 12 сообщений из 12, страница 1 из 1
31.01.2014, 13:46
    #38545058
-=Koba=-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
String split
Можно ли дробить строчку split-ом не по одному параметру, а по N

Код: java
1.
<per.name>test <go xml <per.street>else per.country> spring



Надо разбить по "<", ">", " "

На выходе массив
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
<per.name>
test
<go
xml
<per.street>
else
per.country>
spring



Порядок значения не имеет
...
Рейтинг: 0 / 0
31.01.2014, 14:00
    #38545096
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
String split
если прочитать документацию к методу, то можно обнаружить, что split использует регулярное выражение, а не просто сепаратор.
http://stackoverflow.com/a/7492681
...
Рейтинг: 0 / 0
31.01.2014, 14:09
    #38545115
-=Koba=-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
String split
Blazkowicz,

Я понимаю, что регулярку и проблема в ней
Использую
Код: java
1.
"<|>| 

"

< > не входят в слова

Можно ли в моем случае, чтоб по пробелу так и резалось, а символы < и > оставались в словах?

Или свой парсер писать?
...
Рейтинг: 0 / 0
31.01.2014, 14:13
    #38545124
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
String split
-=Koba=-Можно ли в моем случае, чтоб по пробелу так и резалось, а символы < и > оставались в словах?

Не думаю. А зачем?

-=Koba=-Или свой парсер писать?
StringTokenizer?
...
Рейтинг: 0 / 0
31.01.2014, 14:14
    #38545130
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
String split
BlazkowiczНе думаю. А зачем?

Ой, что-то я гоню. Можно же lookahead/lookbehind попробовать. Чтобы символ попадал в слово, а граница считалась уже до или после.
...
Рейтинг: 0 / 0
31.01.2014, 20:25
    #38545663
Usman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
String split
-=Koba=-Надо разбить по "<", ">", " "
Код: java
1.
split("[\\<\\>\\s]+")
...
Рейтинг: 0 / 0
31.01.2014, 20:51
    #38545675
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
String split
Usman,

Ему надо чтобы скобки остались в результатах, а пробелы - нет.
...
Рейтинг: 0 / 0
31.01.2014, 21:08
    #38545679
rema174
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
String split
-=Koba=-Или свой парсер писать?
я б свой парсер написал
...
Рейтинг: 0 / 0
31.01.2014, 21:12
    #38545681
Usman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
String split
Blazkowicz,

Сорри за невнимательность!
...
Рейтинг: 0 / 0
31.01.2014, 21:22
    #38545685
Usman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
String split
-=Koba=-,

Код: java
1.
2.
3.
4.
String input = "<per.name>test <go xml <per.street>else per.country> spring";
for (String token: input.replace("<", " <").replace(">", "> ").split("\\s+")) {
    System.out.println(token);
}
...
Рейтинг: 0 / 0
31.01.2014, 21:36
    #38545693
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
String split
через positive lookbehind и lookahead, впринципе, что-то похожее
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
public class Test{
    public static void main(String[] args){
        String[] res = "<per.name>test <go xml <per.street>else per.country> spring".split("\\s|(?=\\<)|(?<=\\>)");
        for(String s : res){
            System.out.println("[" + s + "]");
        }
    }
}



[]
[<per.name>]
[test]
[]
[<go]
[xml]
[]
[<per.street>]
[else]
[per.country>]
[spring]



Но пустые строки надо скипать потом
...
Рейтинг: 0 / 0
31.01.2014, 22:44
    #38545714
rema174
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
String split
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
// многа букаф...
String[] array = "<per.name>test <go xml <per.street>else per.country> spring".split("\\s");
for(int i=0; i<array.length; i++) array[i] = array[i].replace(">", "> ").replace("<", " <");
for(int i=0; i<array.length; i++) {
	String[] arr = array[i].split("\\s");
	for(int y=0; y<arr.length; y++) if(!arr[y].isEmpty()) System.out.println(arr[y]);
}
}

автор<per.name>
test
<go
xml
<per.street>
else
per.country>
spring
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / String split / 12 сообщений из 12, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]