Заменить троеточия в тексте на точки и пробелы - C#

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

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

Пожалуйста помогите! Есть задание - выделить предложения из текста. В процессе выполнения столкнулся с проблемой: дана строка. Необходимо заменить все троеточия на точки, если троеточие заканчивает предложение (следующая буква заглавная), или заменить троеточие на пробел, если оно не заканчивает предложение (следующая буква строчная). Можно использовать String.Replace, но оно работает для всей строки сразу, не учитывая регистр букв. Как правильно определить условие регистра, если учитывать, что в одной строке могут быть оба варианта использования троеточий? Вот код функции на текущий момент:
  public static string[] Substrings(string str)
        {
            if (string.IsNullOrEmpty(str))
            {
                return new string[0];
            }
 
            int StartIndex = 0;
            int EndIndex = 0;
            int indexOF = 0;
            List<string> strings = new List<string>();
 
            int length=str.Length;
 
            for (int i = 0; i < length; i++)
            {
                
                EndIndex = i + 1;
                if ((str[i] == '.' )||(str[i] == '!')||(str[i] == '?')) 
                {
                    
                    strings.Add(str.Substring(StartIndex, EndIndex - StartIndex));
                    StartIndex = EndIndex + 1; 
 
                }
            }
            return strings.ToArray();
         }

Решение задачи: «Заменить троеточия в тексте на точки и пробелы»

textual
Листинг программы
using System;
using System.Text.RegularExpressions;
 
namespace test
{
     
    class Program
    {
        static void Main(string[] args)
        {
        string s="Необходимо заменить все троеточия на точки... А если троеточие заканчивает предложение... или заменить троеточие на пробел, если оно не заканчивает предложение... Все";
        s=Regex.Replace(s,@"\.{3}(\s?\w)",m => {
                            return string.Format("{0}{1}",
                                                Regex.IsMatch(m.Groups[1].Value,@"[A-ZА-Я]") ? "." : "",
                                                m.Groups[1].Value);
                        });
        Console.WriteLine(s);
        }
    }
}

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


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

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

12   голосов , оценка 4 из 5
Похожие ответы