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

Отформатировать текст

22.03.2018, 12:18. Показов 1178. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Допустим дан произвольный текст:
C#
1
2
3
Петров вася иванович; 20;test@mail.ru
Сидоров артур петрович;  ,98,;
Игнатьев               Сидор Сидорович; 14; не_ту@Pochta.com
Нужно:
1. Вывести отформатированно текст: ФИО с большой буквы. Вместе разделителя просто пробел
2. И отсортировать по возврасту

С чего нужно начать? Как я понимаю для начала нужно завести массив, потом сплитить до тех пор пока все эти запятые и не нужные символы уйдут, так? Что дальше делать?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
22.03.2018, 12:18
Ответы с готовыми решениями:

Отформатировать текст так, чтобы его ширина не превосходила N позиций, и выровнять текст по краю
Дано целое число N и текстовый файл Name1, содержащий текст, выровненный по левому краю. Абзацы текста отделяются друг от друга одной...

Как отформатировать текст
Допустим у меня есть текст "Ваш ключ: WHWJHJFHDGF2" , нужно отформатировать его, что бы осталось только WHWJHJFHDGF2

Отформатировать текст с фиксацией его ширины
C# Дано целое число K (> 25) и текстовый файл, содержащий текст, вы- ровненный по левому краю. Абзацы текста отделяются друг от друга одной...

8
 Аватар для Chevis
21 / 13 / 10
Регистрация: 27.09.2017
Сообщений: 97
23.03.2018, 09:36
Думаю да. Лучше использовать Split.
C#
1
2
spring[] word = Console.ReadLine().Split(new char[] {';'});
Console.WriteLine("ФИО: " + word[0] + "Возраст: "+ word[1] + "Почта: "+ word[2]);
Добавлено через 8 минут
Пардон. Не spring, а string
0
0 / 0 / 0
Регистрация: 21.04.2014
Сообщений: 80
23.03.2018, 10:25  [ТС]
Chevis, а как задать несколько сплитов?
0
 Аватар для Chevis
21 / 13 / 10
Регистрация: 27.09.2017
Сообщений: 97
23.03.2018, 11:07
Miracle_1, Как я понял, ты хочешь не только точку с запятой но и другие символы? Если да,то так:
C#
1
 string word[] = Console.ReadLine().Split(new char[] {';','любой символ', и т.д})
0
 Аватар для worldown
189 / 177 / 111
Регистрация: 22.06.2009
Сообщений: 533
23.03.2018, 13:28
Chevis,
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
using System;
using System.Text.RegularExpressions;
using System.Collections;
using System.Collections.Generic;
 
namespace csharp_console {
    public class Comparer : IComparer {
        public int Compare(Object x, Object y) {
            return (new CaseInsensitiveComparer()).Compare(x.ToString()[0], y.ToString()[0]);
        }
    }
 
    class thread2214951 {
        static List<string> Replacer(string[] text, string filter) {
            List<string> newText = new List<string>();
            foreach (var str in text) {
                MatchCollection matches = Regex.Matches(str, filter);
                foreach (Match match in matches) {
                    string tmp = "";
                    for (int i = 1; i < 4; i++) {
                        tmp = match.Groups[i].Value[0].ToString().ToUpper();
                        tmp += match.Groups[i].Value.Substring(1);
                        if (i != 3)
                            tmp += " ";
                        else
                            tmp += ";";
                    }
 
                    tmp += match.Groups[4] + ";" + match.Groups[5];
                    newText.Add(tmp);
                }
            }
 
            return newText;
        }
 
        static void Main(string[] args) {
            string[] text = {
                                "игнатьев               Сидор Сидорович; 14; не_ту@Pochta.com",
                                "Петров вася иванович; 20;test@mail.ru",
                                "Сидоров артур петрович;  ,98,;"
                            };
            string filter = @"(\w+)\W*(\w+)\W*(\w+)\W*;\W*(\d+)\W*;(.*)";
 
            var list = Replacer(text, filter).ToArray();
            Array.Sort(list, new Comparer());
            foreach (var str in list) {
                Console.WriteLine(str);
            }
 
        }
    }
}
0
0 / 0 / 0
Регистрация: 21.04.2014
Сообщений: 80
23.03.2018, 13:53  [ТС]
worldown, почему съедает ФИ? В результате выдает только Отчество.
0
 Аватар для worldown
189 / 177 / 111
Регистрация: 22.06.2009
Сообщений: 533
23.03.2018, 14:02
Miracle_1,
поменяйте 21 строку с
C++
1
tmp = match.Groups[i].Value[0].ToString().ToUpper();
на
C++
1
tmp += match.Groups[i].Value[0].ToString().ToUpper();
Добавлено через 2 минуты
Короче, вот законченный вариант по вашему заданию
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
using System;
using System.Text.RegularExpressions;
using System.Collections;
using System.Collections.Generic;
 
namespace csharp_console {
    public class Comparer : IComparer {
        public int Compare(Object x, Object y) {
            return (new CaseInsensitiveComparer()).Compare(x.ToString()[0], y.ToString()[0]);
        }
    }
 
    class thread2214951 {
        static List<string> Replacer(string[] text, string filter) {
            List<string> newText = new List<string>();
            foreach (var str in text) {
                MatchCollection matches = Regex.Matches(str, filter);
                foreach (Match match in matches) {
                    string tmp = "";
                    for (int i = 1; i < 4; i++) {
                        tmp += match.Groups[i].Value[0].ToString().ToUpper();
                        tmp += match.Groups[i].Value.Substring(1);
                        tmp += " ";
                    }
 
                    tmp += match.Groups[4] + " " + match.Groups[5];
                    newText.Add(tmp);
                }
            }
 
            return newText;
        }
 
        static void Main(string[] args) {
            string[] text = {
                                "игнатьев               Сидор Сидорович; 14; не_ту@Pochta.com",
                                "Петров вася иванович; 20;test@mail.ru",
                                "Сидоров артур петрович;  ,98,;"
                            };
            string filter = @"(\w+)\W*(\w+)\W*(\w+)\W*;\W*(\d+)\W*;(.*)";
 
            var list = Replacer(text, filter).ToArray();
            Array.Sort(list, new Comparer());
            foreach (var str in list) {
                Console.WriteLine(str);
            }
 
        }
    }
}
1
0 / 0 / 0
Регистрация: 21.04.2014
Сообщений: 80
23.03.2018, 18:50  [ТС]
worldown, а как ее доработать до структур и все-таки сортировать по age?
0
 Аватар для worldown
189 / 177 / 111
Регистрация: 22.06.2009
Сообщений: 533
26.03.2018, 12:54
Miracle_1, как то так
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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
using System;
using System.Text.RegularExpressions;
using System.Collections.Generic;
using System.Linq;
 
namespace csharp_console {
 
    class TextFilter {
        public string[] Raw { get; set; }
        public string Filter { get; set; }
        public void PrintByName() {
            PrintList(Replacer(Raw, Filter).OrderBy(x => x[0][0]).ToList());
        }
        public void PrintByAge() {
            PrintList(Replacer(Raw, Filter).OrderBy(x => x[1]).ToList());
        }
 
        public void PrintByEmail() {
            PrintList(Replacer(Raw, Filter).OrderBy(x => x.Count < 3 ? x[2][0] : ' ').ToList());
        }
 
        private List<List<string>> Replacer(string[] text, string filter) {
            var newText = new List<List<string>>();
            foreach (var str in text) {
                MatchCollection matches = Regex.Matches(str, filter);
                foreach (Match match in matches) {
                    var tmpList = new List<string>();
                    var tmp = " ";
                    for (int i = 1; i < 4; i++) {
                        tmp += match.Groups[i].Value[0].ToString().ToUpper();
                        tmp += match.Groups[i].Value.Substring(1);
                        if (i < 3) {
                            tmp += " ";
                        }
                    }
                    tmpList.Add(tmp);
                    tmpList.Add(match.Groups[4].Value);
                    tmpList.Add(match.Groups[5].Value);
                    newText.Add(tmpList);
                }
            }
 
            return newText;
        }
        private void PrintList(List<List<string>> list) {
            foreach (var list1 in list) {
                foreach (var list2 in list1) {
                    Console.Write(list2 + " ");
                }
                Console.WriteLine();
            }
        }
 
 
    }
 
    class thread2214951 {
 
        static void Main(string[] args) {
           
            TextFilter text = new TextFilter();
            text.Raw = new string[] {   "игнатьев               Сидор Сидорович; 54; не_ту@Pochta.com",
                                        "Петров вася иванович; 20;test@mail.ru",
                                        "Сидоров артур петрович;  ,98,;"
                                    };
            text.Filter = @"(\w+)\W*(\w+)\W*(\w+)\W*;\W*(\d+)\W*;(.*)";
 
            text.PrintByName();
 
        }
    }
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
26.03.2018, 12:54
Помогаю со студенческими работами здесь

Отформатировать XML
Есть XML вида: &lt;object attr=&quot;someAttr&quot;&gt; &lt;inner&gt;text&lt;/inner&gt; &lt;/object&gt; и таких файлов много. Необходимо переобразовать...

Как отформатировать с выравниванием?
имеются три переменные: ulong (0 to 38) string (size 0 to 10) double (0.0 to 99.00) нужно показать так (не уверен, что браузер...

Отформатировать правильно инициалы
Пытаюсь сделать помощника при вводе инициалов Нужно вводить вручную кучу фамилий и инициалов в формате: в одном текстбоксе Фамилия, в...

Отформатировать число, разделив на разряды
Ребята, помогите пожалуйста. Поставлена такая задача. Дано число, к примеру, 123456790. В итоге необходимо вывести 1 234 567,90 . Короче...

Отформатировать NTFS без использования консоли
Привет. Нужно отформатировать NTFS без использования консоли. От нее решил отказаться, т.к. в консоль нужно передавать нажатия...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru