Проверьте текст на правильность расстановки знаков препинания - C#
Формулировка задачи:
По правилу расстановки знаков препинания перед каждым знаком препинания пробел отсутствует, а после него обязательно стоит пробел. Учитывая данное правило, проверьте текст на правильность расстановки знаков препинания и, если необходимо, внесите в текст изменения.
Решение задачи: «Проверьте текст на правильность расстановки знаков препинания»
textual
Листинг программы
sealed class TextParser
{
private readonly HashSet<char> punctMarks = new HashSet<char>();
private const char space = ' ';
public void AddPunctuationMarks(params char[] punctMarks)
{
punctMarks.ToList().ForEach(m => this.punctMarks.Add(m));
}
public string ProcText(string srcText)
{
StringBuilder sb = new StringBuilder();
foreach(char ch in srcText.ToCharArray())
{
if (punctMarks.Contains(ch))
while (sb.Length > 0 && sb[sb.Length - 1] == space)
sb.Length--;
else if (ch != space && sb.Length > 0 && punctMarks.Contains(sb[sb.Length - 1]))
sb.Append(space);
sb.Append(ch);
}
return sb.ToString();
}
}