Найти и исправить слова в тексте - C#

Узнай цену своей работы

Формулировка задачи:

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

Решение задачи: «Найти и исправить слова в тексте»

textual
Листинг программы
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Text;
  4. using System.Text.RegularExpressions;
  5. using System.Linq;
  6.  
  7. namespace ConsoleApplication207
  8. {
  9.     internal class Program
  10.     {
  11.         private static void Main(string[] args)
  12.         {
  13.             var text = "маму мыла раму, а папу мыл аккордеон.";
  14.             var templates = new List<Template>()
  15.                                 {
  16.                                     new Template("мама"),
  17.                                     new Template("папа")
  18.                                 };
  19.  
  20.             CheckText(ref text, templates);
  21.  
  22.             Console.WriteLine(text);
  23.             Console.ReadLine();
  24.         }
  25.  
  26.         private static void CheckText(ref string text, List<Template> templates)
  27.         {
  28.             foreach(Match m in Regex.Matches(text.ToLower(), @"\w+"))//получаем список слов
  29.             {
  30.                 var word = m.Value;
  31.  
  32.                 foreach(var template in templates)//перебираем шаблоны
  33.                 if(template.GetDistance(word) == 1)//если одно отличие от шаблона
  34.                 {
  35.                     //делаем замену слова на шаблон
  36.                     text = text.Substring(0, m.Index) + template.Word + text.Substring(m.Index + m.Length);
  37.                     break;
  38.                 }
  39.             }
  40.         }
  41.     }
  42.  
  43.     class Template
  44.     {
  45.         public string Word { get; set; }
  46.  
  47.         public Template(string template)
  48.         {
  49.             this.Word = template;
  50.         }
  51.  
  52.         public int GetDistance(string word)
  53.         {
  54.             if (word.Length != Word.Length)
  55.                 return 100;
  56.  
  57.             var dist = 0;
  58.             for (int i = 0; i < word.Length; i++)
  59.                 if (Word[i] != word[i])
  60.                     dist++;
  61.  
  62.             return dist;
  63.         }
  64.     }
  65. }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 4.214 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы