88 lines
3.8 KiB
C#
88 lines
3.8 KiB
C#
using System.Text;
|
||
|
||
while (true)
|
||
{
|
||
Console.ResetColor();
|
||
string input = Console.ReadLine()!;
|
||
|
||
Console.ForegroundColor = ConsoleColor.Green;
|
||
Console.WriteLine(Verbosify(input));
|
||
}
|
||
|
||
static string Verbosify(string input)
|
||
{
|
||
while (input.Contains("..."))
|
||
input = input.Replace("...", "…");
|
||
|
||
input = input.Replace("?!", "‽");
|
||
input = input.Replace("!?", "‽");
|
||
input = input.Replace("?‽", "‽");
|
||
input = input.Replace("!‽", "‽");
|
||
input = input.Replace('“', '"');
|
||
input = input.Replace('”', '"');
|
||
input = input.Replace('‘', '\'');
|
||
input = input.Replace('’', '\'');
|
||
|
||
var builder = new StringBuilder();
|
||
foreach (char character in input)
|
||
{
|
||
if (char.IsLetter(character)) builder.Append(character);
|
||
else
|
||
{
|
||
switch (character)
|
||
{
|
||
case '0': builder.Append(" zero "); break;
|
||
case '1': builder.Append(" one "); break;
|
||
case '2': builder.Append(" two "); break;
|
||
case '3': builder.Append(" three "); break;
|
||
case '4': builder.Append(" four "); break;
|
||
case '5': builder.Append(" five "); break;
|
||
case '6': builder.Append(" six "); break;
|
||
case '7': builder.Append(" seven "); break;
|
||
case '8': builder.Append(" eight "); break;
|
||
case '9': builder.Append(" nine "); break;
|
||
case '…': builder.Append(" ellipsis "); break;
|
||
case '.': builder.Append(" period "); break;
|
||
case ',': builder.Append(" comma "); break;
|
||
case ':': builder.Append(" colon "); break;
|
||
case ';': builder.Append(" semicolon "); break;
|
||
case '‽': builder.Append(" interrobang "); break;
|
||
case '!': builder.Append(" exclamation mark "); break;
|
||
case '?': builder.Append(" question mark "); break;
|
||
case '\'': builder.Append(" apostrophe "); break;
|
||
case '"': builder.Append(" quotation mark "); break;
|
||
case '-': builder.Append(" hyphen "); break;
|
||
case '_': builder.Append(" underscore "); break;
|
||
case '(': builder.Append(" open parenthesis "); break;
|
||
case ')': builder.Append(" close parenthesis "); break;
|
||
case '{': builder.Append(" open brace "); break;
|
||
case '}': builder.Append(" close brace "); break;
|
||
case '[': builder.Append(" open bracket "); break;
|
||
case ']': builder.Append(" close bracket "); break;
|
||
case '<': builder.Append(" open chevon "); break;
|
||
case '>': builder.Append(" close chevon "); break;
|
||
case '+': builder.Append(" plus "); break;
|
||
case '=': builder.Append(" equals "); break;
|
||
case '*': builder.Append(" asterisk "); break;
|
||
case '%': builder.Append(" percent "); break;
|
||
case '$': builder.Append(" dollar "); break;
|
||
case '#': builder.Append(" hash "); break;
|
||
case '@': builder.Append(" at "); break;
|
||
case '&': builder.Append(" ampersand "); break;
|
||
case '|': builder.Append(" pipe "); break;
|
||
case '\\': builder.Append(" backslash "); break;
|
||
case '/': builder.Append(" slash "); break;
|
||
case '^': builder.Append(" caret "); break;
|
||
case '~': builder.Append(" tilde "); break;
|
||
case '`': builder.Append(" grave accent "); break;
|
||
default: builder.Append(character); break;
|
||
}
|
||
}
|
||
}
|
||
|
||
var result = builder.ToString();
|
||
while (result.Contains(" "))
|
||
result = result.Replace(" ", " ");
|
||
|
||
return result.Trim();
|
||
} |