Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.92/13: Рейтинг темы: голосов - 13, средняя оценка - 4.92
5 / 5 / 1
Регистрация: 09.05.2013
Сообщений: 93
.NET 2.x

Выделить подстроки из строки с помощью RegEx

10.05.2013, 22:08. Показов 2889. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть строка
C#
1
string text = @"hgdjhgdjhgds C:\temp\blablabla to D:\ololo"
нужно выделить 2 подстроки так, чтобы
C#
1
2
text_ss1 = @"C:\temp\blablabla"
text_ss2 = @"D:\ololo"
Пути D:\ololo и C:\temp\blablabla могут быть с пробелами, точками, кириллицей и вообщем всеми возможными символами.

Заранее спасибо)
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
10.05.2013, 22:08
Ответы с готовыми решениями:

Из данной строки выделить все подстроки
Задача такова: из данной строки выделить все подстроки. К примеру: дана строка abcd Должно вывести: a ab abc abcd b bc ...

Regex, исключение подстроки
Добрый день! Помогите составить регулярку, пожалуйста. Есть у меня теги: <td><a href="sample.ru"><img...

Выделение подстроки regex
Доброго времени суток С устройств поступают строки "\r\n+CBC: 0,75\r\n\r\nOK\r\n" "\r\n+CBC: 0,75,4.585V\r\n\r\nOK\r\n" ...

9
 Аватар для treyk
54 / 54 / 10
Регистрация: 28.06.2012
Сообщений: 224
10.05.2013, 23:20
barbaris08, изучайте регулярные выражения)
Хотя бы здесь.
1
 Аватар для Евгений В
912 / 672 / 134
Регистрация: 01.03.2010
Сообщений: 1,279
10.05.2013, 23:40
Цитата Сообщение от barbaris08 Посмотреть сообщение
нужно выделить 2
C#
1
2
3
4
5
6
7
8
            string text = @"hgdjhgdjhgds C:\temp\blablabla to D:\ololo";
 
 
            List<string> path = new List<string>();
            foreach (string textElement in text.Split())
            {
                if (textElement.IndexOf(':') > 0) path.Add(textElement);
            }
0
5 / 5 / 1
Регистрация: 09.05.2013
Сообщений: 93
10.05.2013, 23:54  [ТС]
Евгений В, ваш код работает не так, как мне нужно
Он из
C#
1
string c = @"move from C:\Program Files\1.mp3 to D:\Music";
делает
C#
1
2
3
4
5
6
move
from
C:\Program
Files\1.mp3
to
D:\Music
а нужно
C#
1
2
C:\Program Files\1.mp3
D:\Music

treyk, я это видел) не получается у меня пока
0
 Аватар для alechka
75 / 50 / 14
Регистрация: 28.03.2013
Сообщений: 175
11.05.2013, 00:07
вообще если формат строки чушь<пробел>чушь<первый полный путь><пробел>чушь<пробел><второй полный путь>, то алгоритм примерно такой:
1. нашли последнее двоеточие, выбрали всё что с -1 символа до него - это второй путь
2. str2 = подстроку от начала, до первого пробела перед тем, что нашли в первом пункте
3. в str2 нашли двоеточие, и взяли всё, что от -1 символа от него и до конца - это первый путь
0
 Аватар для treyk
54 / 54 / 10
Регистрация: 28.06.2012
Сообщений: 224
11.05.2013, 00:17
alechka,
Цитата Сообщение от barbaris08 Посмотреть сообщение
Пути D:\ololo и C:\temp\blablabla могут быть с пробелами, точками, кириллицей и вообщем всеми возможными символами.
0
 Аватар для Евгений В
912 / 672 / 134
Регистрация: 01.03.2010
Сообщений: 1,279
11.05.2013, 00:20
barbaris08,
Пробелы действительно не учел.

Вот вариант
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
            string text = @"move from C:\Program Files\1.mp3 to D:\Music";
            List<string> path = new List<string>();
 
            int pos=text.IndexOf(':') ;         
            if (pos>0) 
            {
                string paths = text.Remove(0, pos - 2).Replace("to", "|");
 
                foreach (string textElement in paths.Split('|'))
                {
                 if (textElement.IndexOf(':') > 0) path.Add(textElement);
                }
            }
0
 Аватар для alechka
75 / 50 / 14
Регистрация: 28.03.2013
Сообщений: 175
11.05.2013, 00:28
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Цитата Сообщение от treyk Посмотреть сообщение
alechka,
и что? двоеточие на весь путь одно.

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
            var s = @"move from C:\Program Files\1.mp3 to D:\Music";
            //ищем последнее двоеточие
            var last = s.LastIndexOf(':');
            //второй путь
            var path2 = s.Substring(last - 1);
            //выбираем всё, что до пробела перед ним
            var tmp = s.Substring(0, last - 2);
            var indexOflastSpace = tmp.LastIndexOf(' ');
            //выбираем всё, кроме последнего слова
            var tmp2 = s.Substring(0, indexOflastSpace);
            var start = tmp2.IndexOf(':')-1;
            //первый путь
            var path1 = tmp2.Substring(start);
0
 Аватар для treyk
54 / 54 / 10
Регистрация: 28.06.2012
Сообщений: 224
11.05.2013, 00:31
alechka,

Не по теме:

Сори, на бегу прочитал ваше сообщение, немного не так понял. Виноват)

0
5 / 5 / 1
Регистрация: 09.05.2013
Сообщений: 93
11.05.2013, 00:40  [ТС]
Решил вопрос вот таким говнокодом. Но работает как мне надо
C#
1
2
3
4
5
string s1 = text.Substring(text.IndexOf(":") - 1);
string s2 = s1.Substring(0, 2);
string s3 = s1.Substring(2);
string needed_1 = s2 + s3.Substring(0, (s3.IndexOf(":") - 5));
string needed_2 = s3.Substring(s3.IndexOf(":") - 1);
-5, ибо удалось свести к тому, что между путями всегда регулируемое количество символов

Спасибо всем)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
11.05.2013, 00:40
Помогаю со студенческими работами здесь

Regex: получить подстроки между запятыми
Здравствуйте! Я столкнулся вот с такой проблемой: Есть строка типа: подстрока 1, подстрока 2, текст с &quot;кавычками&quot;,...

Как разбить строку на подстроки используя Regex
При работе над одним модулем, возникла проблема такого рода: получаю Json строку такого вида { ts: 196851352, updates: , ] } Мне...

RegEx: выделить группу слов которые находятся перед определенным словом
регулярное выражение должно выделять группу слов которые находяться перед определенным словом. @&quot;(\s|\w|\.|’|-)*&quot; выделяет...

Распарсить строку со скобками с помощью Regex
Как с помощью регулярного выражения вытащить из строки ряд символов, если в строке присутствуют скобки &quot;(&quot; и &quot;)&quot;: ...

Как выделить подстроки в строке, разделенные запятой ?
Собственно вопрос в том, как лучше отпарсить строку так, чтобы выделить подстроки разделенные запятой. Причем если подстрока заключена в...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Программный отбор элементов справочника Номенклатура по группе 1С
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа. В качестве фильтра для отбора справочника служит группа номенклатуры. Отбор под наименованию группы (на. . .
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
Программный отбор элементов справочника Сотрудники по перечислениям 1С
Maks 21.03.2026
Установка программного отбора элементов справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит предопределенное значение перечислений. Процедура. . .
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru