3 / 3 / 0
Регистрация: 14.06.2014
Сообщений: 23
1

Классы регулярных выражений

27.09.2015, 16:16. Показов 1474. Ответов 9
Метки нет (Все метки)

После полного отчества пользователя вставить в скобках аббревиатуру из первой буквы его фамилии и инициалов, например: Иванов Иван Петрович (И.И.П.)

не могу разобраться именно с символами.
вот все что есть

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
    class Program
    {
        static void Main(string[] args)
        {  
            
            string input=" Достоевский Федор Михайлович";  
            Regex reg = new Regex(@"\s[A-Z]\w* [A-Z]\w* [A-Z]\w*\1 (\2.\3.\4.)", RegexOptions.IgnoreCase); //\s[A-Z]\w* [A-Z]\w* [A-Z]\w*\1 (\2.\3.\4.) не знаю как правильнее
            MatchCollection mc = reg.Matches(input);
            foreach (Match mat in mc)
            {
                Console.WriteLine(mat.ToString());
            }
           
                
        }
    }
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.09.2015, 16:16
Ответы с готовыми решениями:

Использование регулярных выражений
Добрый День! Имеется строка в виде <Symbol>GRX/SPB</Symbol>...

Запрет регулярных выражений
Что делать, если нельзя использовать регулярные выражения? Каким образом можно создать свой...

Возможности регулярных выражений
привет. могут ли регулярные выражения такое? "мы ехали 345 туда" если слева цифр и справа...

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

9
154 / 31 / 11
Регистрация: 29.10.2012
Сообщений: 397
27.09.2015, 16:32 2
Извините, что не предоставляю ответ используя regex; терпеть его не могу, но вот сам бы я это реализовал вот так:
C#
1
2
3
4
5
6
            string input = "Альбус Персиваль Вульфрик Брайан Дамблдор";
            var firstLetters = input.Split(' ').Where(p => p != string.Empty).Select(p => p[0]);
            string initials = string.Join(".", firstLetters);
            //Альбус Персиваль Вульфрик Брайан Дамблдор (А.П.В.Б.Д.)
            Console.WriteLine("{0} ({1}.)", input, initials);
            Console.ReadLine();
1
3 / 3 / 0
Регистрация: 14.06.2014
Сообщений: 23
27.09.2015, 16:39  [ТС] 3
спасибо большое за ответ) а нам вот приходится его терпеть)
0
154 / 31 / 11
Регистрация: 29.10.2012
Сообщений: 397
27.09.2015, 16:41 4
Цитата Сообщение от oslik IA Посмотреть сообщение
а нам вот приходится его терпеть
Тому, кто дал вам это задание расскажите про принцип KISS
1
3 / 3 / 0
Регистрация: 14.06.2014
Сообщений: 23
27.09.2015, 17:02  [ТС] 5
хахах это точно

Добавлено через 15 минут
но все же нужен именно класс Regex
отзовиииитесь пожаалуйста те, кто разбирается
0
Покинул форум
4658 / 1302 / 335
Регистрация: 07.05.2015
Сообщений: 2,597
27.09.2015, 17:53 6
Лучший ответ Сообщение было отмечено oslik IA как решение

Решение

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
using System;
using System.Linq;
using System.Text.RegularExpressions;
 
internal sealed class Program {
  static void Main() {
    String s = "Толстой Лев Николаевич";
    Console.Write(s + " (");
    (from Match m in new Regex("[А-Я]").Matches(s) select m.Value)
    .ToList().ForEach(l => Console.Write(l + "."));
    Console.Write(")\n");
  }
}
1
306 / 283 / 102
Регистрация: 06.05.2014
Сообщений: 861
28.09.2015, 11:26 7
Pro100Tom, есть задачи, где использование регулярных выражений - это и будет принцип kiss, вместо дичайшего разбора по символам.
greg zakharov, что будет, если регистр входной строки будет одинаковый?
Предлагаю, вместо примитивного паттерна для заглавных букв (кстати, ты Ё пропустил ) использовать такой: \b\w.
0
Покинул форум
4658 / 1302 / 335
Регистрация: 07.05.2015
Сообщений: 2,597
28.09.2015, 15:28 8
BozKurt, во-первых, мы не запанибрата, поэтому не нужно "тыкать", во-вторых, Вы встречали имена на букву "Ё", в-третьих, никаких специфических оговорок со стороны спрашивающего не было, поэтому претензии считаю необоснованными.
0
306 / 283 / 102
Регистрация: 06.05.2014
Сообщений: 861
28.09.2015, 16:27 9
greg zakharov, прошу прощения у "Вашего Величества".
По поводу буквы ё. Имён может и нет, но фамилии точно присутствуют: https://ru.wiktionary.org/w/in... н#mw-pages
Ну и на счёт претензий. Во-первых, это ничуть не претензия, а вполне логичный вопрос. Во-вторых, решение "Вашего Величества" действительно не будет работать, если регистр ФИО будет не привычный нам всем, а например, всё с большой. Поэтому и предложил на суд "Вашего Величества" более общий паттерн.
0
Покинул форум
4658 / 1302 / 335
Регистрация: 07.05.2015
Сообщений: 2,597
28.09.2015, 17:35 10
BozKurt, не нужно ерничать и скатываться до пошлого "Ваше Величество" и прочее в этом духе. Мы с Вами взрослые люди, верно? На Ваш вопрос был дан вполне четкий ответ: каких-то специфический деталий оговорено не было. Во-вторых, даже если и встречаются фамилии на "Ё", достаточно регулярное выражение привести к виду:
Код
[А-ЯЁ]
Что до регистра в написании - это не было оговорено, как уже говорилось неоднократно. Ну, а если Вы настаиваете на \b\w, то искренне рад, что Вы читаете книги.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.09.2015, 17:35
Помогаю со студенческими работами здесь

Вопрос по использованию регулярных выражений
Использую Regex следующим образом: Regex RE = new Regex(matchPattern, RegexOptions.IgnoreCase |...

Вопрос касаемый Регулярных Выражений
Всем доброго времени суток! Мое первое сообщение на форуме. Прошу помочь в решении вот такой...

Grep без регулярных выражений
пытаюсь написать аналог grep из Linux, имеется вот такой код: static void Main(string args) ...

Применение регулярных выражений к файлу
Мне нужно осуществить поиск по текстовому файлу (этак 15000 слов), можно ли не создавая переменные...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru