точку должно добавлять только если в конце строки какой-то символ или цифра?c#/string
точку должно добавлять только если в конце строки какой-то символ или цифра. Или по другому: точку надо добавлять, только если в конце нету уже точки/запятой/знака восклицания/точки с запятой.
знаков препинания больше чем запятая и двоеточие. Есть еще: !?._;
знаки препинания должно заменять(реплейсить) в цикле. Оно должно убирать двойные запятые до тех пор, пока они там есть. Их может быть не две подряд, а 20 например. То-есть надо проверять в условии цикла или есть двойные запятые, и если есть то заменять. И так постоянно, пока двойных запятых там не останется. Оно так должно делать с каждым знаком пунктуации (для каждого из них отдельный цикл).
Console.WriteLine("Введите строку:"); string str = (Console.ReadLine()); str = str.Replace(",,", ","); str = str.Replace("::", ":"); str += "."; if (str.Length > 0) str = str[0].ToString().ToUpper() + str.Remove(0, 1).Trim(); Console.WriteLine(str); }} }
Ответы (2 шт):
Console.WriteLine("Введите строку:");
string str = (Console.ReadLine());
if (str.Length > 0)
str = str[0].ToString().ToUpper() + str.Remove(0, 1).Trim();
if (str.EndsWith("!") == true)
str += "";
else if (str.EndsWith("?") == true)
str += "";
else if (str.EndsWith("-") == true)
str += "";
else if (str.EndsWith(".") == true)
str += "";
else if (str.EndsWith(";") == true)
str += "";
else if (str.EndsWith(".?-.;") == false)
str += ".";
while (str.Contains(",,"))
str = str.Replace(",,", ",");
while (str.Contains("::"))
str = str.Replace("::", ":");
while (str.Contains("!!"))
str = str.Replace("!!", "!");
while (str.Contains("??"))
str = str.Replace("??", "?");
while (str.Contains(".."))
str = str.Replace("..", ".");
while (str.Contains("--"))
str = str.Replace("--", "-");
while (str.Contains(";;"))
str = str.Replace(";;", ";");
Console.WriteLine(str);
}
}
}
Давайте попробую я, постараюсь попроще
Console.WriteLine("Введите строку:");
string text = Console.ReadLine();
// первую букву заглавной, хотя этого в условии нет, но есть в коде
text = char.ToUpper(text[0]) + text.SubString(1);
string chars = ".,?!:;-"; // все символы пунктуации
// поставить точку, если не символ в конце
if (Array.IndexOf(chars, text[text.Length - 1]) < 0)
text += '.';
// убрать дубликаты
foreach (char c in chars)
{
string dup = new string(c, 2);
while (text.Contains(dup))
text = text.Replace(dup, c.ToString());
}