Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.87/15: Рейтинг темы: голосов - 15, средняя оценка - 4.87
1 / 1 / 0
Регистрация: 28.10.2010
Сообщений: 36

Строку нужно разделить на составляющие

22.11.2010, 12:58. Показов 2971. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть строка "ас123фер4.5а", нужно вывести
ас
123
фер
4.5
а

Помогите пожалуйста!
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
22.11.2010, 12:58
Ответы с готовыми решениями:

Разложить строку на составляющие
Приветствую, ребята, что-то никак не могу сообразить как сделать. Есть текстовый файл, в нем данные, например. 5552145=5484654664 ...

Разбить строку (IP-адрес) на составляющие
Всем привет ! Подскажите как можно разбить строку с айпи адрессом на 4 части ? например есть у меня строка в которой значение 127.0.0.1 мне...

Разделить число на составляющие и найти искомую цифру
Программа, которая разделяет число на состовляющие и находит искомую цифру, вот, то, что получилось: # include <stdio.h> ...

9
Padawan
 Аватар для Johnny_D
473 / 323 / 30
Регистрация: 30.01.2010
Сообщений: 1,841
22.11.2010, 13:26
По какому принципу делить?
Самое простое это использовать
C#
1
substr
, если все это жестко закодировано по длине, иначе проще использовать регулярки.
0
 Аватар для Unril
826 / 717 / 110
Регистрация: 06.10.2010
Сообщений: 825
Записей в блоге: 1
22.11.2010, 14:41
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
#region using
 
using System;
 
#endregion
 
namespace ConsoleApplicationTest
{
    public static class Program
    {
        private static void Main()
        {
            // Исходная строка.
            string str = "ас123фер4.5а";
            Console.WriteLine("Исходная строка: " + str);
            // Начальное состояние.
            int state = 1;
            foreach (char c in str)
            {
                switch (state)
                {
                    case 1:
                        {
                            if (char.IsLetter(c))
                                state = 2;
                            else if (char.IsNumber(c) || char.IsSymbol(c))
                                state = 3;
                        }
                        break;
                    case 2:
                        {
                            if (char.IsNumber(c) || char.IsSymbol(c))
                            {
                                state = 3;
                                Console.WriteLine();
                            }
                        }
                        break;
                    case 3:
                        {
                            if (char.IsLetter(c))
                            {
                                state = 2;
                                Console.WriteLine();
                            }
                        }
                        break;
                }
                Console.Write(c);
            }
            Console.ReadKey();
        }
    }
}
Для общего ознакомления рекомендую поискать информацию про то, что такое конечный автомат и с чем его едят. Иногда очень бывает полезным.
0
 Аватар для Unril
826 / 717 / 110
Регистрация: 06.10.2010
Сообщений: 825
Записей в блоге: 1
22.11.2010, 15:07
Кстати, если кому будет интересно, то вот его диаграмма состояний:
0
1 / 1 / 0
Регистрация: 28.10.2010
Сообщений: 36
22.11.2010, 15:39  [ТС]
Мне нужен код, как можно проще. И не в консольном режиме
0
 Аватар для Unril
826 / 717 / 110
Регистрация: 06.10.2010
Сообщений: 825
Записей в блоге: 1
22.11.2010, 16:06
Куда уж проще.
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
using System;
using System.Text;
 
namespace ConsoleApplicationTest
{
    public static class Program
    {
        private static void Main()
        {
            // Исходная строка.
            string str = "ас123фер4.5а";
            // Результат.
            StringBuilder stringBuilder = new StringBuilder();
            // Начальное состояние.
            int state = 1;
            foreach (char c in str)
            {
                switch (state)
                {
                    case 1:
                        {
                            if (char.IsLetter(c))
                                state = 2;
                            else if (char.IsNumber(c) || char.IsSymbol(c))
                                state = 3;
                        }
                        break;
                    case 2:
                        {
                            if (char.IsNumber(c) || char.IsSymbol(c))
                            {
                                state = 3;
                                stringBuilder.AppendLine();
                            }
                        }
                        break;
                    case 3:
                        {
                            if (char.IsLetter(c))
                            {
                                state = 2;
                                stringBuilder.AppendLine();
                            }
                        }
                        break;
                }
                stringBuilder.Append(c);
            }
 
            Console.WriteLine(stringBuilder.ToString());
            Console.ReadKey();
        }
    }
}
Выводит результат в stringBuilder. Как получить исходную строку и как вывести её куда-либо - Библиотека MSDN в помощь.
0
1 / 1 / 0
Регистрация: 28.10.2010
Сообщений: 36
22.11.2010, 16:44  [ТС]
Да блин, мне наставник сказал, нужно строку как бы посимвольно перебирать и потом, что нашел кидать на новые строки..
0
 Аватар для Unril
826 / 717 / 110
Регистрация: 06.10.2010
Сообщений: 825
Записей в блоге: 1
22.11.2010, 17:38
Цитата Сообщение от egorkastep Посмотреть сообщение
Да блин, мне наставник сказал, нужно строку как бы посимвольно перебирать и потом, что нашел кидать на новые строки..
C#
1
2
3
4
 foreach (char c in str)
            {
...
}
Это перебор строки. с - символ. str - строка. Аналогично циклу
C#
1
for(i=0; i<str.Lenght; i++){char c = str[i]; ...}
char.IsNumber(c) - проверка на то, что символ с - цифра.
char.IsSymbol(c) - знак препинания.
char.IsLetter(c) - буква.

В конце цикла в stringBuilder добавляется текущий символ. Когда буквы сменяются цифрами или знаками препинания, или наоборот, в stringBuilder добавляется новая строка.

Можно сделать ещё так:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
        private static void Main()
        {
            // Исходная строка.
            string str = "ас123фер4.5а";
            // Результат.
            StringBuilder stringBuilder = new StringBuilder();
            stringBuilder.Append(str[0]);
            for (int i = 1; i < str.Length; i++)
            {
                if (char.IsLetter(str[i]) && !char.IsLetter(str[i - 1])
                    || char.IsLetter(str[i - 1]) && !char.IsLetter(str[i]))
                {
                    stringBuilder.AppendLine();
                }
                stringBuilder.Append(str[i]);
            }
            Console.WriteLine(stringBuilder.ToString());
            Console.ReadKey();
        }
Это будет наверное попроще для понимания.

Как вариант, через регулярные выражения:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
        private static void Main()
        {
            // Исходная строка.
            string str = "ас123фер4.5а";
            // Результат.
            StringBuilder stringBuilder = new StringBuilder();
            
            Regex regex = new Regex(@"[0-9\,\.]+|[a-zA-ZА-Яа-я]+");
            var maches = regex.Matches(str);
            foreach (Match mache in maches)
            {
                stringBuilder.AppendLine(mache.ToString());
            }
 
            Console.WriteLine(stringBuilder.ToString());
            Console.ReadKey();
        }
Выбирай, какой больше нравится.

Добавлено через 30 минут
Совсем забыл
Ещё можно традиционно в одну строку с помощью Linq:
C#
1
2
3
4
5
6
7
8
            // Исходная строка.
            string str = "ас123фер4.5а";
            // Результат.
            string strlist = str.Substring(1).Aggregate(str[0].ToString(),
                                                        (s, c) =>
                                                        char.IsLetter(s[s.Length - 1]) == char.IsLetter(c)
                                                            ? s + c
                                                            : s + "\n" + c);
2
1 / 1 / 0
Регистрация: 28.10.2010
Сообщений: 36
22.11.2010, 19:31  [ТС]
Спасибо Сейчас буду вникать и переделаю под неконсольный)

Добавлено через 1 час 50 минут
Че то он ошибку мне выдает
C#
1
2
3
 private void button1_Click(object sender, EventArgs e)
        { //подчеркивает эту скобку
               private static void Main()
0
 Аватар для Unril
826 / 717 / 110
Регистрация: 06.10.2010
Сообщений: 825
Записей в блоге: 1
22.11.2010, 20:24
Цитата Сообщение от egorkastep Посмотреть сообщение
Спасибо Сейчас буду вникать и переделаю под неконсольный)

Добавлено через 1 час 50 минут
Че то он ошибку мне выдает
C#
1
2
3
 private void button1_Click(object sender, EventArgs e)
        { //подчеркивает эту скобку
               private static void Main()
Нельзя просто вставить одну процедуру в другую. Напиши
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
           private void button1_Click(object sender, EventArgs e)
{
 string str = textBox1.Text;
            StringBuilder stringBuilder = new StringBuilder();
            stringBuilder.Append(str[0]);
            for (int i = 1; i < str.Length; i++)
            {
                if (char.IsLetter(str[i]) && !char.IsLetter(str[i - 1])
                    || char.IsLetter(str[i - 1]) && !char.IsLetter(str[i]))
                {
                    stringBuilder.AppendLine();
                }
                stringBuilder.Append(str[i]);
            }
            textBox2.Text = stringBuilder.ToString();
        }
Перед этим создай два textBox, причём во втором установи свойство Multiline в true.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
22.11.2010, 20:24
Помогаю со студенческими работами здесь

Нужно разделить эту строку на 3 части и вывести на экран.
Здравствуйте! Вот задача: К примеру у нас есть строка длина которой кратная 3. Нужно разделить эту строку на 3 части и вывести на...

Распарсить строку на составляющие
Я ввожу в консоль строку find file.txt и теперь мне нужно распарсить строку, на составляющие. 1 слово 0 это команда 2 слово и...

Разобрать строку на составляющие
Есть исходная строка, которая может отличаться, пример 1 01 Плоечка Отметить нападениеНабег на 00 Сереееееженька ...

Разбить строку на составляющие
Всем здраствуйте. Нужна помощь,необходимо сделать программку которая бы обрабатывала таблицы,т.е. убирала лишние пробелы,заменяла...

Как строку вида 129Mb разбить на составляющие 129 и Mb?
Собственно вопрос в названии темы


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru