Форум программистов, компьютерный форум CyberForum.ru

Парсинг строки - Android

Восстановить пароль Регистрация
 
eXeShnik
 Аватар для eXeShnik
11 / 11 / 2
Регистрация: 12.02.2016
Сообщений: 36
17.11.2016, 19:39     Парсинг строки #1
У меня есть строка вида
{el1=val1,el2=val2...eln=valn}
Как её распарсить таким образом, что бы в арайлист занести только значения(val1,2,...,n)?
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.11.2016, 19:39     Парсинг строки
Посмотрите здесь:

Парсинг строки Android
Android Парсинг Википедии
Парсинг сайта Android
Парсинг JSON-строки и вывод данных из строки Android
Android Парсинг JSON
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
petruchodd
 Аватар для petruchodd
88 / 88 / 8
Регистрация: 23.06.2009
Сообщений: 501
17.11.2016, 19:57     Парсинг строки #2
Java
1
String[] split(String regex)
ExFau$t
55 / 55 / 4
Регистрация: 08.05.2012
Сообщений: 448
17.11.2016, 19:59     Парсинг строки #3
ну первое, что приходит в уставшую голову: индекс первого =
Java
1
str.indexOf("=");
индекс первой запятой, потом substring, дальше то же самое, только от "индекс первой запятой" ищешь второе =. Ну это грубо очень конечно.

Добавлено через 1 минуту
если строка вида: {el1=val1,el2=val2,eln=valn}, то можно сплитом сначала по запятым, потом по равно.
eXeShnik
 Аватар для eXeShnik
11 / 11 / 2
Регистрация: 12.02.2016
Сообщений: 36
17.11.2016, 20:09  [ТС]     Парсинг строки #4
petruchodd, Можна ли по подробнее об этом String regex

Добавлено через 3 минуты
ExFau$t, я парсил похожим образом но у меня только на 2 елемента
Java
1
2
3
4
5
6
7
8
9
String[] s1,s2;
        for(i=0;i<parser.length;i++){
            s1=parser[i].split("=");
            s2=s1[1].split(",");
            pass=s2[0];
            username=s1[2].substring(0,s1[2].length()-1);
            stringArrayList.add(username);
            stringArrayList.add(pass);
        }
Добавлено через 6 минут
ExFau$t, но почему я спросил есть ли обобщенный алгоритм
Паблито
не спать!
1803 / 1537 / 478
Регистрация: 12.05.2014
Сообщений: 5,596
Завершенные тесты: 1
17.11.2016, 20:16     Парсинг строки #5
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Java
1
List<String> list = Arrays.asList(str.replaceAll("\\{|\\w+=|}", "").split(","));
ExFau$t
17.11.2016, 20:27
  #6

Не по теме:

самое простое в голову не пришло...

eXeShnik
 Аватар для eXeShnik
11 / 11 / 2
Регистрация: 12.02.2016
Сообщений: 36
17.11.2016, 20:49  [ТС]     Парсинг строки #7
Паблито,
Syntax error in regexp pattern near index 9:
\{|\w+=|}
немогу понять почему выдает исключение
код скопировал

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
 private void userChek() {
        boolean re=false;
        arrayList=user.arrayList;
        String login=logT.getText().toString(),
                password=Cryptography.md5(passT.getText().toString());
        String s="";
        for(i=0;i<arrayList.size();i++){
            s+=arrayList.get(i).toString()+"\n";
        }
        s=s.substring(0,s.length()-1);
        String[] parser=s.split("\n");
        for(i=0;i<parser.length;i++){
            List<String> list = Arrays.asList(parser[i].replaceAll("\\{|\\w+=|}", "").split(","));
            if (list.contains(login) & list.contains(password)) {
                re=true;
                break;
            }
            else re=false;
        }
        if (re) {
            Toast.makeText(this, "Hello " + logT.getText().toString(), Toast.LENGTH_LONG).show();
        } else {
            Toast.makeText(this, "Wrong login or password", Toast.LENGTH_LONG).show();
        }
    }
Паблито
не спать!
1803 / 1537 / 478
Регистрация: 12.05.2014
Сообщений: 5,596
Завершенные тесты: 1
17.11.2016, 20:57     Парсинг строки #8
может форум убирает косые палочки
просто надо проверить внимательно символы
Парсинг строки
eXeShnik
 Аватар для eXeShnik
11 / 11 / 2
Регистрация: 12.02.2016
Сообщений: 36
17.11.2016, 21:10  [ТС]     Парсинг строки #9
Паблито, user.arrayList - этот элемент береться из jsonparser.class
Паблито
не спать!
1803 / 1537 / 478
Регистрация: 12.05.2014
Сообщений: 5,596
Завершенные тесты: 1
17.11.2016, 21:13     Парсинг строки #10
поверь, я тоже умею писать бессмысленные фразы

просто проверь внимательно регулярное выражение, как оно написано у меня на скриншоте и у себя в коде
eXeShnik
 Аватар для eXeShnik
11 / 11 / 2
Регистрация: 12.02.2016
Сообщений: 36
17.11.2016, 21:15  [ТС]     Парсинг строки #11
Паблито, также!!!
поэтому я и скинул весь код
Паблито
не спать!
1803 / 1537 / 478
Регистрация: 12.05.2014
Сообщений: 5,596
Завершенные тесты: 1
17.11.2016, 21:18     Парсинг строки #12
как этот код относится к первоначальному вопросу?
eXeShnik
 Аватар для eXeShnik
11 / 11 / 2
Регистрация: 12.02.2016
Сообщений: 36
17.11.2016, 21:23  [ТС]     Парсинг строки #13
Паблито, у меня есть несколько джонс парсеров которые выдают массив в формате
котором я описал выше({el1=val1,el2=val2,eln=valn})

Добавлено через 1 минуту
Паблито, но так как количество элементов разное,я и захотел узнать,обобщённый алгоритм парсинга
Паблито
не спать!
1803 / 1537 / 478
Регистрация: 12.05.2014
Сообщений: 5,596
Завершенные тесты: 1
17.11.2016, 21:23     Парсинг строки #14
ты молодец

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

за сим, сливаюсь с темы, ибо все запущено
eXeShnik
 Аватар для eXeShnik
11 / 11 / 2
Регистрация: 12.02.2016
Сообщений: 36
17.11.2016, 21:25  [ТС]     Парсинг строки #15
Вот
Миниатюры
Парсинг строки  
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.11.2016, 22:20     Парсинг строки
Еще ссылки по теме:

Парсинг с Selenide на AS Android
Парсинг строки ввода Android
Парсинг Json Android

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
eXeShnik
 Аватар для eXeShnik
11 / 11 / 2
Регистрация: 12.02.2016
Сообщений: 36
17.11.2016, 22:20  [ТС]     Парсинг строки #16
Нужно добавить \\ перед } что бы получилось так "\\{|\\w+=|\\}"
и всё заработает
Yandex
Объявления
17.11.2016, 22:20     Парсинг строки
Ответ Создать тему
Опции темы

Текущее время: 14:44. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru