Foro de elhacker.net

Programación => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: Meta en 30 Diciembre 2021, 23:35 pm



Título: Salto de línea de palabras
Publicado por: Meta en 30 Diciembre 2021, 23:35 pm
Buenas.

En modo consola C#.

Al escribir en el teclado al llegar al carácter 20, sigo escribiendo y me sale el renglón abajo. Así sucesivamente.

¿Es posible hacerlo sin pulsar Enter?

Que lo haga solo.

Felices fiestas 2021.


Título: Re: Salto de línea de palabras
Publicado por: Meta en 31 Diciembre 2021, 07:46 am
Quiero saber si es posible hacerlo con muchos menos códigos.

Código
  1. using System;
  2.  
  3. namespace Return_a_patir_del_caracter_20_Consola_01
  4. {
  5.    internal class Program
  6.    {
  7.        static void Main(string[] args)
  8.        {
  9.            #region Configuración ventana.
  10.            // Título de la ventana.
  11.            Console.Title = "Return a partir del caracter 20";
  12.  
  13.            // Tamaño de la ventana, x, y.
  14.            Console.SetWindowSize(70, 25);
  15.  
  16.            // Color de fondo.
  17.            Console.BackgroundColor = ConsoleColor.Gray;
  18.  
  19.            // Color de las letras.
  20.            Console.ForegroundColor = ConsoleColor.Black;
  21.  
  22.            // Limpiar pantalla y dejarlo todo gris.
  23.            Console.Clear();
  24.  
  25.            // Visible el cursor.
  26.            Console.CursorVisible = true;
  27.            #endregion
  28.  
  29.            Console.WriteLine("Hello World!");
  30.            string line = ReadLine20CharByLine();
  31.        }
  32.  
  33.        static string ReadLine20CharByLine()
  34.        {
  35.            string result = "";
  36.            ConsoleKeyInfo key;
  37.            int count = 0;
  38.            while ((key = Console.ReadKey()).Key != ConsoleKey.Enter)
  39.            {
  40.                if (key.Modifiers == (ConsoleModifiers.Control | ConsoleModifiers.Shift | ConsoleModifiers.Alt))
  41.                {
  42.                    continue; // ignora caracteres si viene con algún modificador
  43.                }
  44.                if (key.Key == ConsoleKey.Backspace) // si se pulsa BackSpace
  45.                {
  46.                    if (result.Length > 0)
  47.                    {
  48.                        if (count == 0)  // si estás al principio de un renglón que no es el 1ro
  49.                        {                // borra el último caracter del renglón anterior
  50.                            Console.SetCursorPosition(20, Console.CursorTop - 1);
  51.                            Console.Write("\b \b");
  52.                            count = 19;
  53.                        }
  54.                        else       // si no, borra el caracter y retrocede en la misma linea
  55.                        {
  56.                            Console.Write(" \b");
  57.                            count--;
  58.                        }
  59.                        result = result.Substring(0, result.Length - 1);
  60.                    }
  61.                }
  62.                else  // si no se pulsó BackSpace ni ninguna tecla con Modifier
  63.                {     // se suma el caracter a result
  64.                    result += key.KeyChar.ToString();
  65.                    count++;
  66.                    if (count == 20)
  67.                    {
  68.                        count = 0;
  69.                        Console.SetCursorPosition(0, Console.CursorTop + 1);
  70.                    }
  71.                }
  72.            }
  73.            return result;
  74.        }
  75.    }
  76. }
  77.  

Feliz fin e año 2021.