Quiero saber si es posible hacerlo con muchos menos códigos.
Feliz fin e año 2021.
Código (csharp) [Seleccionar]
using System;
namespace Return_a_patir_del_caracter_20_Consola_01
{
internal class Program
{
static void Main(string[] args)
{
#region Configuración ventana.
// Título de la ventana.
Console.Title = "Return a partir del caracter 20";
// Tamaño de la ventana, x, y.
Console.SetWindowSize(70, 25);
// Color de fondo.
Console.BackgroundColor = ConsoleColor.Gray;
// Color de las letras.
Console.ForegroundColor = ConsoleColor.Black;
// Limpiar pantalla y dejarlo todo gris.
Console.Clear();
// Visible el cursor.
Console.CursorVisible = true;
#endregion
Console.WriteLine("Hello World!");
string line = ReadLine20CharByLine();
}
static string ReadLine20CharByLine()
{
string result = "";
ConsoleKeyInfo key;
int count = 0;
while ((key = Console.ReadKey()).Key != ConsoleKey.Enter)
{
if (key.Modifiers == (ConsoleModifiers.Control | ConsoleModifiers.Shift | ConsoleModifiers.Alt))
{
continue; // ignora caracteres si viene con algún modificador
}
if (key.Key == ConsoleKey.Backspace) // si se pulsa BackSpace
{
if (result.Length > 0)
{
if (count == 0) // si estás al principio de un renglón que no es el 1ro
{ // borra el último caracter del renglón anterior
Console.SetCursorPosition(20, Console.CursorTop - 1);
Console.Write("\b \b");
count = 19;
}
else // si no, borra el caracter y retrocede en la misma linea
{
Console.Write(" \b");
count--;
}
result = result.Substring(0, result.Length - 1);
}
}
else // si no se pulsó BackSpace ni ninguna tecla con Modifier
{ // se suma el caracter a result
result += key.KeyChar.ToString();
count++;
if (count == 20)
{
count = 0;
Console.SetCursorPosition(0, Console.CursorTop + 1);
}
}
}
return result;
}
}
}
Feliz fin e año 2021.