Аватар для Злобный Зайц
14 / 14 / 1
Регистрация: 21.10.2010
Сообщений: 462

Разобрать строку на цифровые и буквенные фрагменты

20.01.2016, 18:25. Показов 1880. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
То есть, допустим, строку "1238стопитсот345345и ещё чутоку8" надо расколоть на "1238","стопитсот","345345","и ещё чутоку","8".
Ничё не могу придумать. Всё, что приходит в голову - сплошной ужос.
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
20.01.2016, 18:25
Ответы с готовыми решениями:

Цифровые и буквенные аргументы printf
Извиняюсь за свою необразованность. Имеем вот такой код: per="a" ; printf '%d\n' "$per" bash: printf: a:...

Подсчитать, сколько раз в строке встречаются цифровые и буквенные символы
Цель работы: Сздать программу модульной структуры, т.е. имеющую в своём составе процедуры и/или функции. Дана строка. Подсчитать,...

Разбить строку на фрагменты заданной ширины
Столкнулся с проблемой, необходимо написать программу которая принимает длинный текст text и ширину поля вывода width и выводит текст в...

14
Заблокирован
20.01.2016, 19:08
лови регулярку
C#
1
@"\d+|\D+"
0
 Аватар для Злобный Зайц
14 / 14 / 1
Регистрация: 21.10.2010
Сообщений: 462
20.01.2016, 19:10  [ТС]
Чиво?! Ничёнипонил (пардон). Может быть, накидаете примерчик?
0
Заблокирован
20.01.2016, 19:13
C#
1
var x = Regex.Split("1238стопитсот345345и ещё чутоку8", @"\d+|\D+");
0
 Аватар для Злобный Зайц
14 / 14 / 1
Регистрация: 21.10.2010
Сообщений: 462
20.01.2016, 19:19  [ТС]
Чёта не то. Результат - 5 пустых строк.
0
6 / 6 / 5
Регистрация: 15.01.2016
Сообщений: 220
20.01.2016, 19:20
как я понял можно ввести переменную, типа:

Code
1
2
var i = "1238стопитсот345345и ещё чутоку8" 
var x = Regex.Split( i, @"\d+|\D+");
а так можно? :

Code
1
2
3
4
...code...
Console.ReadLine();
var i = Console.ReadLine();
var x = Regex.Split( i, @"\d+|\D+");
0
Заблокирован
20.01.2016, 19:22
Лучший ответ Сообщение было отмечено Злобный Зайц как решение

Решение

а нет, сплит не подойдет, придется через Matches
C#
1
var x = Regex.Matches("1238стопитсот345345и ещё чутоку8", @"\d+|\D+").Cast<Match>().Select(m => m.Value).ToArray();
1
 Аватар для Злобный Зайц
14 / 14 / 1
Регистрация: 21.10.2010
Сообщений: 462
20.01.2016, 19:24  [ТС]
Воооооо!!! Теперь классно! Работает!
По правде сказать, эти письмена далеко за пределами моего понимания, но пока, пожалуй, не буду лезть в дебри. Когда-нибудь, может быть, дорасту и до этого.
Благодарю душевно! То, что доктор прописал!
0
25 / 25 / 22
Регистрация: 22.02.2015
Сообщений: 125
20.01.2016, 19:26
Вот набросал на скорую руку, что в голову пришло первое, но во первых есть изъян-метод не учитывает последний символ строки и его нужно проверять вручную.
C#
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
26
27
static List<string> Split(string s)
        {
            string temp = "";
            List<string> substring=new List<string>();
            for(int i=0; i<s.Length-1;i++)
            {
                if (Char.IsDigit(s[i]))
                {
                    temp += s[i];
                    if (!Char.IsDigit(s[i + 1]))
                    {
                        substring.Add(temp);
                        temp = "";
                    }
                }
                else if (Char.IsLetter(s[i]) || Char.IsWhiteSpace(s[i]))
                {
                    temp += s[i];
                    if (!Char.IsLetter(s[i + 1]) && !Char.IsWhiteSpace(s[i + 1]))
                    {
                        substring.Add(temp);
                        temp = "";
                    }
                }
            }
            return substring;
        }
1
 Аватар для Злобный Зайц
14 / 14 / 1
Регистрация: 21.10.2010
Сообщений: 462
20.01.2016, 19:28  [ТС]
Не, спасибо, конечно, но так я и сам могу. Хотелось как-то по-изящнее.
0
25 / 25 / 22
Регистрация: 22.02.2015
Сообщений: 125
20.01.2016, 19:29
Согласен, вариант выше мне тоже понравился больше.
0
 Аватар для Злобный Зайц
14 / 14 / 1
Регистрация: 21.10.2010
Сообщений: 462
20.01.2016, 19:43  [ТС]
Volrajas, у меня, вообще-то конечная цель - сделать компаратор строк, который сравнивает сначала числовую составляющую (как число), если она одинаковая, то следующий символьный фрагмент (как строки). Поэтому хотелось бы нарубить строку сразу на пары int+string. И чтобы так же красиво было, в одну строку. Как на счёт этого? Раз уж у Вас так ловко с регулярными выражениями всё получается.
0
Заблокирован
20.01.2016, 19:45
Злобный Зайц, 1. зачем? 2. разве это не то же что делает мой код?
0
26 / 26 / 14
Регистрация: 09.06.2014
Сообщений: 162
20.01.2016, 21:19
Почитайте про регулярные выражения, с вашей задаче очень облегчит дело.
0
1137 / 685 / 412
Регистрация: 07.11.2015
Сообщений: 1,102
21.01.2016, 01:20
Цитата Сообщение от Volrajas Посмотреть сообщение
а нет, сплит не подойдет, придется через Matches
C#
1
var x = Regex.Matches("1238стопитсот345345и ещё чутоку8", @"\d+|\D+").Cast<Match>().Select(m => m.Value).ToArray();
Если делать через сплит, то нужно искать границу между числом и словом
C#
1
var x = Regex.Split("1238стопитсот345345и ещё чутоку8", @"(?<=\d)(?=\D)|(?<=\D)(?=\d)");
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
21.01.2016, 01:20
Помогаю со студенческими работами здесь

Разделить строку на фрагменты и отредактировать каждый
Дана строка. Разделить строку на фрагменты по три подряд идущих символа. В каждом фрагменте средний символ заменить на случайный символ, не...

В строке заменить все фрагменты x на фрагменты y
В заданной строке z заменить все фрагменты x на фрагменты y. Для решения используйте собственную функцию pos (f, s, p), что возвращает...

Разобрать строку
Добрый день всем! Необходимо быстро получить число строк огромного файла. В шелле это делается вот так: wc -l results_II2.txt В...

Разобрать строку
В яве не силен, поэтому прошу помощи. Есть строка вида 1, 2, 3, 11, 15 Нужно к каждому элементу строки добавить произвольный текст,...

Классы разобрать строку
#include &lt;iostream&gt; using namespace std; class CAT { public: CAT() { itsAge = 1; itsWeight = 5; } ~CAT(){ } int...


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

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

Новые блоги и статьи
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2. Задача: разработка отчёта по затраченным материалам за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом. В. . .
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
Запрет удаления строк ТЧ документа при определённом условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru