20 / 20 / 14
Регистрация: 12.02.2016
Сообщений: 75
1

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

17.11.2016, 19:39. Показов 1999. Ответов 15
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
У меня есть строка вида
{el1=val1,el2=val2...eln=valn}
Как её распарсить таким образом, что бы в арайлист занести только значения(val1,2,...,n)?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.11.2016, 19:39
Ответы с готовыми решениями:

Парсинг JSON-строки и вывод данных из строки
Добрый день! Я разрабатываю Android-клиент, который мог бы обмениваться данными с размещенной...

Парсинг строки
Добрый день. Столкнулся с проблемой. В общем есть некая строка примерно такого содержания...

Парсинг строки ввода
подскажите как парсить строки, для ввода данных пользователем(если можно примером)

Парсинг строки и вывод в массив
Доброго дорогие форумчане, вот моя проблема столкнулся с такой проблемой, у меня в базе есть...

15
129 / 126 / 22
Регистрация: 23.06.2009
Сообщений: 700
17.11.2016, 19:57 2
Java
1
String[] split(String regex)
0
1570 / 1168 / 426
Регистрация: 08.05.2012
Сообщений: 5,219
17.11.2016, 19:59 3
ну первое, что приходит в уставшую голову: индекс первого =
Java
1
str.indexOf("=");
индекс первой запятой, потом substring, дальше то же самое, только от "индекс первой запятой" ищешь второе =. Ну это грубо очень конечно.

Добавлено через 1 минуту
если строка вида: {el1=val1,el2=val2,eln=valn}, то можно сплитом сначала по запятым, потом по равно.
0
20 / 20 / 14
Регистрация: 12.02.2016
Сообщений: 75
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, но почему я спросил есть ли обобщенный алгоритм
0
2883 / 2295 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
17.11.2016, 20:16 5
Лучший ответ Сообщение было отмечено eXeShnik как решение

Решение

Java
1
List<String> list = Arrays.asList(str.replaceAll("\\{|\\w+=|}", "").split(","));
3
ExFau$t
17.11.2016, 20:27
  #6

Не по теме:

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

0
20 / 20 / 14
Регистрация: 12.02.2016
Сообщений: 75
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();
        }
    }
0
2883 / 2295 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
17.11.2016, 20:57 8
может форум убирает косые палочки
просто надо проверить внимательно символы
Парсинг строки
0
20 / 20 / 14
Регистрация: 12.02.2016
Сообщений: 75
17.11.2016, 21:10  [ТС] 9
Паблито, user.arrayList - этот элемент береться из jsonparser.class
0
2883 / 2295 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
17.11.2016, 21:13 10
поверь, я тоже умею писать бессмысленные фразы

просто проверь внимательно регулярное выражение, как оно написано у меня на скриншоте и у себя в коде
0
20 / 20 / 14
Регистрация: 12.02.2016
Сообщений: 75
17.11.2016, 21:15  [ТС] 11
Паблито, также!!!
поэтому я и скинул весь код
0
2883 / 2295 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
17.11.2016, 21:18 12
как этот код относится к первоначальному вопросу?
0
20 / 20 / 14
Регистрация: 12.02.2016
Сообщений: 75
17.11.2016, 21:23  [ТС] 13
Паблито, у меня есть несколько джонс парсеров которые выдают массив в формате
котором я описал выше({el1=val1,el2=val2,eln=valn})

Добавлено через 1 минуту
Паблито, но так как количество элементов разное,я и захотел узнать,обобщённый алгоритм парсинга
0
2883 / 2295 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
17.11.2016, 21:23 14
ты молодец

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

за сим, сливаюсь с темы, ибо все запущено
0
20 / 20 / 14
Регистрация: 12.02.2016
Сообщений: 75
17.11.2016, 21:25  [ТС] 15
Вот
Миниатюры
Парсинг строки  
0
20 / 20 / 14
Регистрация: 12.02.2016
Сообщений: 75
17.11.2016, 22:20  [ТС] 16
Нужно добавить \\ перед } что бы получилось так "\\{|\\w+=|\\}"
и всё заработает
0
17.11.2016, 22:20
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.11.2016, 22:20
Помогаю со студенческими работами здесь

Парсинг строки
Доброго времени суток. В метод класса передается строка формата 1+2 Нужно распарсить строку на...

Парсинг строки
помогите пожалуйста сделать функцию, которая разбивает строку на слова и засовывает каждое...

Парсинг строки
Доброго времени суток! Как с помощью рег. выражений распарсить текст: &lt;par1&gt; ...

Парсинг строки
Есть строка со словами без знаков препинания. Все слова состоят только из нижнего регистра. 1)...


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

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru