Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.62/13: Рейтинг темы: голосов - 13, средняя оценка - 4.62
1 / 1 / 0
Регистрация: 11.04.2013
Сообщений: 51

парсер строки и запись в комбобокс

07.06.2013, 15:11. Показов 2700. Ответов 17
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Приветствую!

Такая проблема. Есть строка:

C#
1
 responseString = "250511, 38208671744, calset01.zvx, , 83549, calset02.zvx, , 83413, calset03.zvx, , 83549, \n"
Надо вытащить из нее только названия файлов (calset01.zvx, calset02.zvx, calset03.zvx и получить массив строк и выдать его в комбобокс.

не могу понять по какому признаку мне их "отфильтровать".

смог родить только такое, но это конечно не тот результат который мне нужен...

C#
1
2
3
4
5
string[] split = responseString.Split(new char[] { ' ', ','});
                foreach (string s in split)
                {
                    comboBox1.Items.Add(s);
                }
Помогите пожалуйста.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
07.06.2013, 15:11
Ответы с готовыми решениями:

Окрасить запись в комбобокс
Здравствуйте! Еще вопрос: "Как покрасить, например в красный цвет, запись в комбобоксе формы, в которой заполнено поле выбытие"? В...

Запись в комбобокс только разных значений
Заполняю комбобокс for (int i = 0; i < this.DataSet.One.Rows.Count; i++) { ...

Запись данных в комбобокс формы из модуля
Очень прошу совета у форумчан разбирающихся VB.NET. Сижу в ступоре (т.е. в голове не возникает никаких идей) перед такой вот задачкой:...

17
 Аватар для Бельфегор
688 / 601 / 139
Регистрация: 08.05.2009
Сообщений: 1,098
07.06.2013, 15:35
C#
1
2
3
4
5
6
7
8
9
10
11
using System.Text.RegularExpressions;
 
string responseString = "250511, 38208671744, calset01.zvx, , 83549, calset02.zvx, , 83413, calset03.zvx, , 83549, \n";
            Regex reg = new Regex("calset(.*?).zvx", RegexOptions.IgnoreCase);
            foreach (Match mtch in reg.Matches(responseString))
            {
                if (mtch.Success)
                {
                    string fileName = mtch.ToString();
                }
            }
1
1 / 1 / 0
Регистрация: 11.04.2013
Сообщений: 51
07.06.2013, 17:15  [ТС]
Бельфегор, спасибо! Но не совсем понимаю как сделать так что бы он выдавал все 3 файла. в fileName отображается только последний. А как сделать что бы fileName можно было использовать не только внутри класса? Например для того что бы можно было отобразить результат в выпадающем списке и/или использовать эти имена для вызова данных файлов.

Добавлено через 1 час 2 минуты
Я не могу понять как сделать что бы reg.Matches сохранялись в массив строк. ПОМОГИТЕ пожалуйста.
0
644 / 198 / 5
Регистрация: 24.07.2010
Сообщений: 1,315
07.06.2013, 17:42
C#
1
2
3
4
if (mtch.Success)
                {
                    string fileName = mtch.ToString();
                }
здесь вместо
C#
1
string fileName = mtch.ToString();
можешь писать все что нужно
0
1 / 1 / 0
Регистрация: 11.04.2013
Сообщений: 51
07.06.2013, 17:42  [ТС]
Сделал! Получилось вот так:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
                string responseString = "250511, 38208671744, calset01.zvx, , 83549, calset02.zvx, , 83413, calset03.zvx, , 83549, \n";
                string fileName = Regex.Unescape("calset(.*?).zvx");
                MatchCollection matches = Regex.Matches(responseString, fileName);
                var fileNameList = new List<string>();
                foreach (Match match in matches)
                {
                    fileNameList.Add(match.Value);
                }
 
                foreach (string s in fileNameList)
                {
                    comboBox1.Items.Add(s);
                }
0
644 / 198 / 5
Регистрация: 24.07.2010
Сообщений: 1,315
07.06.2013, 17:47
ну пусть будет так=) можно было бы сразу добавлять в комбобокс, но не суть)
0
1 / 1 / 0
Регистрация: 11.04.2013
Сообщений: 51
07.06.2013, 17:51  [ТС]
23Alex24, да, там я тоже уже разобрался. туда где вместо дописал

C#
1
2
3
4
5
6
7
                        var fileNameList = new List<string>();
                        fileNameList.Add(mtch.Value);
 
                        foreach (string s in fileNameList)
                        {
                            comboBox1.Items.Add(s);
                        }
Добавлено через 2 минуты
аааа понял) в итоге вот на таком варианте остановился

C#
1
2
3
4
5
6
                string fileName = Regex.Unescape("calset(.*?).zvx");
                MatchCollection matches = Regex.Matches(responseString, fileName);
                foreach (Match match in matches)
                {
                    comboBox1.Items.Add(match.Value);
                }
Добавлено через 45 секунд
СПАСИБО!
0
644 / 198 / 5
Регистрация: 24.07.2010
Сообщений: 1,315
07.06.2013, 17:53
Вот и славненько =)
1
1 / 1 / 0
Регистрация: 11.04.2013
Сообщений: 51
10.06.2013, 12:29  [ТС]
А теперь несколько усложнилась задача.

String responseString = " 436425, 38207578112, 2.92f-2.92f.cal, , 145475, 2.92m-2.92m.cal, , 145475, n male - n female.cal, , 145475, "

Вопрос такой - могу ли я regexом парсить массив строк? То есть я сначала бы по запятым разбил на массив строк с помощью сплита, а потом искал бы по расширению. Но насколько я понимаю regex работает только со строками? Или может есть более оптимальный способ?
0
644 / 198 / 5
Регистрация: 24.07.2010
Сообщений: 1,315
10.06.2013, 13:15
Да в принципе это нормальный вариант, чтобы все по запятым разбить, а потом каждый элемент пропустить через regex
0
1 / 1 / 0
Регистрация: 11.04.2013
Сообщений: 51
10.06.2013, 13:19  [ТС]
23Alex24, а regex может работать с массивом строк? или надо делать цикл который будет каждую строку отдельно проверять?
0
169 / 132 / 29
Регистрация: 16.02.2013
Сообщений: 867
10.06.2013, 13:25
Цитата Сообщение от Venethi Посмотреть сообщение
А теперь несколько усложнилась задача.

String responseString = " 436425, 38207578112, 2.92f-2.92f.cal, , 145475, 2.92m-2.92m.cal, , 145475, n male - n female.cal, , 145475, "

Вопрос такой - могу ли я regexом парсить массив строк? То есть я сначала бы по запятым разбил на массив строк с помощью сплита, а потом искал бы по расширению. Но насколько я понимаю regex работает только со строками? Или может есть более оптимальный способ?
а смысл этого действа? тебе нужно получить имена с расширением .cal?? после .cal идет запятая, верно?? Что мешает добавить эту запятую в само выражение, и сразу получать значение, а не изобретать какуюто ахинею с разбиением строки, и уж потом парсингом?

Добавлено через 1 минуту
Цитата Сообщение от Venethi Посмотреть сообщение
23Alex24, а regex может работать с массивом строк? или надо делать цикл который будет каждую строку отдельно проверять?
0
1 / 1 / 0
Регистрация: 11.04.2013
Сообщений: 51
10.06.2013, 13:30  [ТС]
Цитата Сообщение от Winhttp22 Посмотреть сообщение
а смысл этого действа? тебе нужно получить имена с расширением .cal?? после .cal идет запятая, верно?? Что мешает добавить эту запятую в само выражение, и сразу получать значение, а не изобретать какуюто ахинею с разбиением строки, и уж потом парсингом?

Добавлено через 1 минуту

С запятой после расширения - не работает. На выходе получается массив строк :

436425, 38207578112, 2.92f-2.92f.cal,
, 145475, 2.92m-2.92m.cal,
, 145475, n male - n female.cal, , 145475,


А мне нужно что бы на выходе был список файлов:

2.92f-2.92f.cal
2.92m-2.92m.cal
n male - n female.cal
0
644 / 198 / 5
Регистрация: 24.07.2010
Сообщений: 1,315
10.06.2013, 13:33
Вот смотри описание класса regex http://msdn.microsoft.com/ru-r... regex.aspx
тебя интересуют методы, значит находишь тот метод, который тебя интересует, например, тот же Matches

Добавлено через 2 минуты
Вообще можешь почитать про регулярные выражения и сам поймешь как они работают, а так можешь разбить по запятым и каждую строку прогнать через регулярку, так будет все явно правильно работать )
0
169 / 132 / 29
Регистрация: 16.02.2013
Сообщений: 867
10.06.2013, 13:42
Цитата Сообщение от Venethi Посмотреть сообщение


А мне нужно что бы на выходе был список файлов:

2.92f-2.92f.cal
2.92m-2.92m.cal
n male - n female.cal
ок
Так пойдёт -
C#
1
2
            String responseString = " 436425, 38207578112, 2.92f-2.92f.cal, , 145475, 2.92m-2.92m.cal, , 145475, n male - n female.cal, , 145475, ";
            MatchCollection m=Regex.Matches(responseString,@"[^,]*\.cal");
?

Добавлено через 1 минуту
Вообще можешь почитать про регулярные выражения и сам поймешь как они работают, а так можешь разбить по запятым и каждую строку прогнать через регулярку, так будет все явно правильно работать )
ведь это БРЕД, имхо!
1
644 / 198 / 5
Регистрация: 24.07.2010
Сообщений: 1,315
10.06.2013, 14:00
Это не бред, нормальный подход, просто не знал, что можно такую регулярку написать =) Сейчас попробывал разобраться, вроде примерно понял что делает
1
1 / 1 / 0
Регистрация: 11.04.2013
Сообщений: 51
10.06.2013, 15:04  [ТС]
Может и бред был, но для меня единственный очевидный способ быстро решить проблему.

Добавлено через 7 минут
Winhttp22, спасибо огромное!!!

Вот честно уже полдня читаю про регулярные выражения а ваше регулярное выражение понять не могу... То есть я понимаю что оно работает, но вот как?

Добавлено через 19 минут
А все вроде разобрался.
0
644 / 198 / 5
Регистрация: 24.07.2010
Сообщений: 1,315
10.06.2013, 15:19
Короче он там ищет строки, у которых нет символа запятой и окончание .cal
[^,] - вот это означает отрицание запятой, то есть любой символ кроме запятой
* - 0 или больше символов таких
\.cal - .cal
то есть ищется набор символов без запятой и с .cal в конце
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
10.06.2013, 15:19
Помогаю со студенческими работами здесь

Строки в комбобокс
У меня в combobox1 три строки Один Два Три В зависимости от того, какое значение принимает combobox, оператор условие будет...

Строки в Комбобокс документа Ворд
Чтобы загнать строки в Комбобокс документа Ворд, какие нужно, в какой Комбобокс нужно я делаю проверки при помощи ВБА. Чем больше...

Парсер csv, и запись в txt
Здравствуйте. Помогите пожалуйста, решить задание. На вход подаем файл *.csv такого формата, количество строк N, после них могут быть...

Парсер данных с сайта и запись в XML
Как создать парсер для сайта который копирует нужный мне кусок кода с нужных мне стр. и записывает их в xml файл... Например с этой стр...

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


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

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Новые блоги и статьи
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru