Saltar al contenido

Centrar texto en la aplicación de consola C# solo funciona con alguna entrada

Presta atención porque en esta reseña vas a encontrar el arreglo que buscas.

Solución:

Prueba esto en su lugar:

private static void centerText(String text)

    Console.Write(new string(' ', (Console.WindowWidth - text.Length) / 2));
    Console.WriteLine(text);

El problema con su código inicial fue que su texto empieza en el centro de la pantalla. Desea que el centro del texto esté allí.

Vas a hacer un poco más de trabajo si quieres imprimir párrafos completos centrados así.

El texto pasado puede tener espacios en blanco como rnluego elimínelo antes de llamar a la escritura como

string textClean = Regex.Replace(text, @"([rn])", string.Empty);

// Then center on text clean 

Tengo mi propio método para llamar a los encabezados de la consola:

public static void Header(string title, string subtitle = "", ConsoleColor color = ConsoleColor.White)

    int windowWidth = 90 - 2;
    string titleContent = String.Format("║0," + ((windowWidth / 2) + (title.Length / 2)) + "1," + (windowWidth - (windowWidth / 2) - (title.Length / 2) + 1) + "", title, "║");
    string subtitleContent = String.Format("║0," + ((windowWidth / 2) + (subtitle.Length / 2)) + "1," + (windowWidth - (windowWidth / 2) - (subtitle.Length / 2) + 1) + "", subtitle, "║");

    Console.WriteLine("╔════════════════════════════════════════════════════════════════════════════════════════╗");
    Console.WriteLine(titleContent);
    if (!string.IsNullOrEmpty(subtitle))
    
        Console.WriteLine(subtitleContent);
    
    Console.WriteLine("╚════════════════════════════════════════════════════════════════════════════════════════╝");

Entonces lo llamas así YourStaticClass.Header("Test", "Version 1.0");

Debe tener un aspecto como este:

╔════════════════════════════════════════════════════════════════════════════════════════╗
║                                          Test                                          ║
║                                      Version 1.0                                       ║
╚════════════════════════════════════════════════════════════════════════════════════════╝

Puedes reemplazar el 90 en windowsWidth con Console.WindowWidth

ACTUALIZAR – Febrero de 2019: código limpio y tamaño dinámico

/// 
/// Application header, also sets the console title
/// 
/// Title of application
/// Subtitle of application
/// Foreground color
public static void Header(string title, string subtitle = "", ConsoleColor foreGroundColor = ConsoleColor.White, int windowWidthSize = 90)

    Console.Title = title + (subtitle != "" ? " - " + subtitle : "");
    string titleContent = CenterText(title, "║");
    string subtitleContent = CenterText(subtitle, "║");
    string borderLine = new String('═', windowWidthSize - 2);

    Console.ForegroundColor = foreGroundColor;
    Console.WriteLine($"╔borderLine╗");
    Console.WriteLine(titleContent);
    if (!string.IsNullOrEmpty(subtitle))
    
        Console.WriteLine(subtitleContent);
    
    Console.WriteLine($"╚borderLine╝");
    Console.ResetColor();


/// 
/// Align content to center for console. Can be used with decoration if used inside menu or header
/// 
/// Content to center
/// Left and right decoration, default is empty/none
/// Center aligned text
public static string CenterText(string content, string decorationString = "", int windowWidthSize = 90)

    int windowWidth = windowWidthSize - (2 * decorationString.Length);
    return String.Format(decorationString + "0," + ((windowWidth / 2) + (content.Length / 2)) + "1," + (windowWidth - (windowWidth / 2) - (content.Length / 2) + decorationString.Length) + "", content, decorationString);

Ten en cuenta dar recomendación a esta sección si te fue útil.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *