AYUDA .NET

Humanizer C# (Cómo funciona para desarrolladores)

Chipego
Chipego Kalinda
1 de julio, 2024
Compartir:

Humanizer es una biblioteca .NET potente y flexible que simplifica y humaniza el proceso de trabajar con datos, especialmente cuando se trata de mostrar la información en un formato fácil de usar. Ya sea que necesite convertir fechas a cadenas de tiempo relativo ("hace 3 días"), pluralizar palabras, formatear números como palabras o trabajar con enums, mostrar cadenas, cadenas de entrada en Pascal Case como oraciones con descripciones personalizadas, cadenas de entrada subrayadas a cadenas de título normal, y truncación de textos largos, Humanizer proporciona una amplia gama de herramientas y métodos de extensión para manejar estas tareas elegantemente en C#.NET y convertir cadenas de entrada deshumanizadas en oraciones.

En este artículo, vamos a discutir un tutorial detallado de Humanizer en C#. También discutiremos cómo generar documentos PDF utilizando Humanizer y IronPDF para C# PDF Library.

Configuración de Humanizer en C

Para empezar a utilizar Humanizer, es necesario instalar la biblioteca a través de NuGet. En su proyecto, puede hacerlo a través de la consola del gestor de paquetes con el siguiente comando:

Install-Package Humanizer
Install-Package Humanizer
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'Install-Package Humanizer
$vbLabelText   $csharpLabel

Como alternativa, si utiliza la CLI de .NET Core, puede añadir Humanizer con:

dotnet add package Humanizer

Tras la instalación, puede empezar a utilizar Humanizer incluyendo el espacio de nombres adecuado en sus archivos de C#:

using Humanizer;
using Humanizer;
Imports Humanizer
$vbLabelText   $csharpLabel

Humanizar fechas y horas

Uno de los usos más comunes de Humanizer es convertir fechas y horas en formatos legibles para humanos, lapsos de tiempo, números y cantidades utilizando el método Humanize. Esto resulta especialmente útil para mostrar tiempos relativos, como "hace 2 horas" o "dentro de 5 días".

Ejemplo: Humanizar el tiempo relativo

DateTime pastDate = DateTime.Now.AddDays(-3);
string humanizedTime = pastDate.Humanize(); // Output: "3 days ago"
DateTime futureDate = DateTime.Now.AddHours(5);
string futureHumanizedTime = futureDate.Humanize(); // Output: "in 5 hours"
DateTime pastDate = DateTime.Now.AddDays(-3);
string humanizedTime = pastDate.Humanize(); // Output: "3 days ago"
DateTime futureDate = DateTime.Now.AddHours(5);
string futureHumanizedTime = futureDate.Humanize(); // Output: "in 5 hours"
Dim pastDate As DateTime = DateTime.Now.AddDays(-3)
Dim humanizedTime As String = pastDate.Humanize() ' Output: "3 days ago"
Dim futureDate As DateTime = DateTime.Now.AddHours(5)
Dim futureHumanizedTime As String = futureDate.Humanize() ' Output: "in 5 hours"
$vbLabelText   $csharpLabel

El método de ampliación Humanizer maneja automáticamente diferentes unidades de tiempo e incluso se ajusta a la corrección gramatical.

Humanizer C# (Cómo Funciona Para Desarrolladores): Figura 1 - Humanizando la Salida de Tiempo Relativo

Humanizar los plazos

Humanizer también puede humanizar objetos TimeSpan, facilitando la visualización de duraciones en un formato legible.

Ejemplo: Humanizar TimeSpan

TimeSpan timeSpan = TimeSpan.FromMinutes(123);
string humanizedTimeSpan = timeSpan.Humanize(2); // Output: "2 hours, 3 minutes"
TimeSpan timeSpan = TimeSpan.FromMinutes(123);
string humanizedTimeSpan = timeSpan.Humanize(2); // Output: "2 hours, 3 minutes"
Dim timeSpan As TimeSpan = System.TimeSpan.FromMinutes(123)
Dim humanizedTimeSpan As String = timeSpan.Humanize(2) ' Output: "2 hours, 3 minutes"
$vbLabelText   $csharpLabel

Humanizer C# (Cómo Funciona para Desarrolladores): Figura 2 - Humanización de la Salida de TimeSpan

Trabajar con números

Humanizer ofrece varios métodos para convertir números en palabras legibles y para tratar números ordinales.

Ejemplo: Conversión de números en palabras

int number = 123;
string words = number.ToWords(); // Output: "one hundred and twenty-three"
int number = 123;
string words = number.ToWords(); // Output: "one hundred and twenty-three"
Dim number As Integer = 123
Dim words As String = number.ToWords() ' Output: "one hundred and twenty-three"
$vbLabelText   $csharpLabel

Humanizer C# (Cómo Funciona Para Desarrolladores): Figura 3 - Salida de Número a Palabra

Ejemplo: Conversión de números en ordinales

int number = 21;
string ordinal = number.ToOrdinalWords(); // Output: "twenty-first"
int number = 21;
string ordinal = number.ToOrdinalWords(); // Output: "twenty-first"
Dim number As Integer = 21
Dim ordinal As String = number.ToOrdinalWords() ' Output: "twenty-first"
$vbLabelText   $csharpLabel

Humanizer C# (Cómo Funciona Para Desarrolladores): Figura 4 - Conversión de Número a Ordinal

Pluralización y singularización

Humanizer facilita la conversión de palabras entre sus formas singular y plural, lo que resulta útil para generar dinámicamente textos largos en función de la cantidad.

Ejemplo: Pluralizar y singularizar palabras

string singular = "car";
string plural = singular.Pluralize(); // Output: "cars"
string word = "people";
string singularForm = word.Singularize(); // Output: "person"
string singular = "car";
string plural = singular.Pluralize(); // Output: "cars"
string word = "people";
string singularForm = word.Singularize(); // Output: "person"
Dim singular As String = "car"
Dim plural As String = singular.Pluralize() ' Output: "cars"
Dim word As String = "people"
Dim singularForm As String = word.Singularize() ' Output: "person"
$vbLabelText   $csharpLabel

Humanizer maneja también pluralizaciones y singularizaciones irregulares, lo que lo hace robusto para diversos casos de uso.

Humanizer C# (Cómo funciona para desarrolladores): Figura 5 - Salida en plural y singular

Formato de Enums

Los Enums se utilizan con frecuencia en las aplicaciones de C# para representar un conjunto de constantes con nombre. Humanizer puede convertir valores enum en cadenas legibles por humanos.

Ejemplo: Humanizar Enums

MyEnum enumValue = MyEnum.FirstValue;
string humanizedEnum = enumValue.Humanize();
System.Console.WriteLine(humanizedEnum);
public enum MyEnum
{
    FirstValue,
    SecondValue
} // Output: "First value"
MyEnum enumValue = MyEnum.FirstValue;
string humanizedEnum = enumValue.Humanize();
System.Console.WriteLine(humanizedEnum);
public enum MyEnum
{
    FirstValue,
    SecondValue
} // Output: "First value"
Private enumValue As MyEnum = MyEnum.FirstValue
Private humanizedEnum As String = enumValue.Humanize()
System.Console.WriteLine(humanizedEnum)
'INSTANT VB TODO TASK: Local functions are not converted by Instant VB:
'public enum MyEnum
'{
'	FirstValue,
'	SecondValue
'} ' Output: "First value"
$vbLabelText   $csharpLabel

Este método puede ser especialmente útil para mostrar etiquetas fáciles de usar en las interfaces de usuario.

Humanizer C# (Cómo Funciona Para Desarrolladores): Figura 6 - Humanizar Salida de Enum

Humanizar el tamaño de los bytes

Otra función útil de Humanizer es la capacidad de humanizar los tamaños de bytes, convirtiendo los valores de bytes grandes en formatos legibles como KB, MB o GB.

Ejemplo: Humanizar el tamaño de los bytes

long bytes = 1048576;
string humanizedBytes = bytes.Bytes().Humanize(); // Output: "1 MB"
long bytes = 1048576;
string humanizedBytes = bytes.Bytes().Humanize(); // Output: "1 MB"
Dim bytes As Long = 1048576
Dim humanizedBytes As String = bytes.Bytes().Humanize() ' Output: "1 MB"
$vbLabelText   $csharpLabel

Humanizer C# (Cómo Funciona Para Desarrolladores): Figura 7 - Humanizando la Salida del Tamaño en Bytes

Escenarios avanzados

Humanizer no se limita a los escenarios básicos descritos anteriormente. Admite una amplia gama de funciones avanzadas, como el método Truncate, múltiples idiomas y extensiones.

Ejemplo: Humanizar los desfases fecha-hora

Humanizer también puede manejar DateTimeOffset, lo cual es útil para aplicaciones que tratan con zonas horarias.

DateTimeOffset dateTimeOffset = DateTimeOffset.Now.AddDays(-2);
string humanizedDateTimeOffset = dateTimeOffset.Humanize(); // Output: "2 days ago"
DateTimeOffset dateTimeOffset = DateTimeOffset.Now.AddDays(-2);
string humanizedDateTimeOffset = dateTimeOffset.Humanize(); // Output: "2 days ago"
Dim dateTimeOffset As DateTimeOffset = System.DateTimeOffset.Now.AddDays(-2)
Dim humanizedDateTimeOffset As String = dateTimeOffset.Humanize() ' Output: "2 days ago"
$vbLabelText   $csharpLabel

Humanizer C# (Cómo Funciona Para Desarrolladores): Figura 8 - Humanización de la Salida de DateTime Offset

Consideraciones sobre el rendimiento

Humanizer está diseñado para ser eficiente, pero como cualquier biblioteca, su rendimiento depende de cómo se utilice. Para las aplicaciones que requieren un alto rendimiento, especialmente las que tratan con grandes conjuntos de datos o procesamiento en tiempo real, es esencial tener en cuenta el impacto de las frecuentes operaciones de humanización.

IronPDF para C#

IronPDF es una completa biblioteca de generación y manipulación de PDF para aplicaciones .NET. Permite a los desarrolladores crear, leer, editar y extraer contenido de archivos PDF con facilidad. IronPDF está diseñado para ser fácil de usar, ofreciendo una amplia gama de funcionalidades, incluyendo la conversión de HTML a PDF, la fusión de documentos, la adición de marcas de agua, y mucho más. Su versatilidad y sus potentes funciones lo convierten en una excelente opción para manejar documentos PDF en proyectos de C#.

Instalación de IronPDF mediante el gestor de paquetes NuGet

Siga estos pasos para instalar IronPDF utilizando el gestor de paquetes NuGet:

  1. Abre tu proyecto en Visual Studio:

    • Inicie Visual Studio y abra su proyecto C# existente o cree uno nuevo.
  2. Abra el Administrador de paquetes NuGet:

    • Haga clic con el botón derecho en su proyecto en el Explorador de soluciones.

    • Seleccione "Gestionar paquetes NuGet..." en el menú contextual.

    Humanizer C# (Cómo funciona para desarrolladores): Figura 9 - Administrador de paquetes NuGet

  3. Instalar IronPDF:

    • En el Gestor de paquetes NuGet, vaya a la pestaña "Examinar".

    • Buscar IronPDF.

    • Seleccione el paquete de IronPDF de los resultados de búsqueda.

    • Haga clic en el botón "Instalar" para añadir IronPDF a su proyecto.

    ![Humanizer C# (Cómo Funciona Para Desarrolladores): Figura 10 - IronPDF]

    Siguiendo estos pasos, IronPDF estará instalado y listo para usar en su proyecto C#, permitiéndole aprovechar sus potentes capacidades de manipulación de PDF.

Ejemplo de Código C# Humanizer e IronPDF

using Humanizer;
using IronPdf;
using System;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
        // Instantiate Renderer
        var renderer = new ChromePdfRenderer();
        List<string> content = GenerateHumanizedContent();
        string htmlContent = "<h1>Humanizer Examples</h1><ul>";

        // Iterate over each item in the List and add it to the HTML string
        foreach (var item in content)
        {
            htmlContent += $"<li>{item}</li>";
        }
        htmlContent += "</ul>";

        // Create a PDF from an HTML string using C#
        var pdf = renderer.RenderHtmlAsPdf(htmlContent);

        // Export to a file or stream
        pdf.SaveAs("output.pdf");
    }

    static List<string> GenerateHumanizedContent()
    {
        List<string> content = new List<string>();

        // DateTime examples
        DateTime pastDate = DateTime.Now.AddDays(-3);
        DateTime futureDate = DateTime.Now.AddHours(5);
        content.Add($"DateTime.Now: {DateTime.Now}");
        content.Add($"3 days ago: {pastDate.Humanize()}");
        content.Add($"In 5 hours: {futureDate.Humanize()}");

        // TimeSpan examples
        TimeSpan timeSpan = TimeSpan.FromMinutes(123);
        content.Add($"TimeSpan of 123 minutes: {timeSpan.Humanize()}");

        // Number examples
        int number = 12345;
        content.Add($"Number 12345 in words: {number.ToWords()}");
        content.Add($"Ordinal of 21: {21.ToOrdinalWords()}");

        // Pluralization examples
        string singular = "car";
        content.Add($"Plural of 'car': {singular.Pluralize()}");
        string plural = "children";
        content.Add($"Singular of 'children': {plural.Singularize()}");

        // Byte size examples
        long bytes = 1048576;
        content.Add($"1,048,576 bytes: {bytes.Bytes().Humanize()}");

        return content;
    }
}
using Humanizer;
using IronPdf;
using System;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
        // Instantiate Renderer
        var renderer = new ChromePdfRenderer();
        List<string> content = GenerateHumanizedContent();
        string htmlContent = "<h1>Humanizer Examples</h1><ul>";

        // Iterate over each item in the List and add it to the HTML string
        foreach (var item in content)
        {
            htmlContent += $"<li>{item}</li>";
        }
        htmlContent += "</ul>";

        // Create a PDF from an HTML string using C#
        var pdf = renderer.RenderHtmlAsPdf(htmlContent);

        // Export to a file or stream
        pdf.SaveAs("output.pdf");
    }

    static List<string> GenerateHumanizedContent()
    {
        List<string> content = new List<string>();

        // DateTime examples
        DateTime pastDate = DateTime.Now.AddDays(-3);
        DateTime futureDate = DateTime.Now.AddHours(5);
        content.Add($"DateTime.Now: {DateTime.Now}");
        content.Add($"3 days ago: {pastDate.Humanize()}");
        content.Add($"In 5 hours: {futureDate.Humanize()}");

        // TimeSpan examples
        TimeSpan timeSpan = TimeSpan.FromMinutes(123);
        content.Add($"TimeSpan of 123 minutes: {timeSpan.Humanize()}");

        // Number examples
        int number = 12345;
        content.Add($"Number 12345 in words: {number.ToWords()}");
        content.Add($"Ordinal of 21: {21.ToOrdinalWords()}");

        // Pluralization examples
        string singular = "car";
        content.Add($"Plural of 'car': {singular.Pluralize()}");
        string plural = "children";
        content.Add($"Singular of 'children': {plural.Singularize()}");

        // Byte size examples
        long bytes = 1048576;
        content.Add($"1,048,576 bytes: {bytes.Bytes().Humanize()}");

        return content;
    }
}
Imports Humanizer
Imports IronPdf
Imports System
Imports System.Collections.Generic

Friend Class Program
	Shared Sub Main()
		' Instantiate Renderer
		Dim renderer = New ChromePdfRenderer()
		Dim content As List(Of String) = GenerateHumanizedContent()
		Dim htmlContent As String = "<h1>Humanizer Examples</h1><ul>"

		' Iterate over each item in the List and add it to the HTML string
		For Each item In content
			htmlContent &= $"<li>{item}</li>"
		Next item
		htmlContent &= "</ul>"

		' Create a PDF from an HTML string using C#
		Dim pdf = renderer.RenderHtmlAsPdf(htmlContent)

		' Export to a file or stream
		pdf.SaveAs("output.pdf")
	End Sub

	Private Shared Function GenerateHumanizedContent() As List(Of String)
		Dim content As New List(Of String)()

		' DateTime examples
		Dim pastDate As DateTime = DateTime.Now.AddDays(-3)
		Dim futureDate As DateTime = DateTime.Now.AddHours(5)
		content.Add($"DateTime.Now: {DateTime.Now}")
		content.Add($"3 days ago: {pastDate.Humanize()}")
		content.Add($"In 5 hours: {futureDate.Humanize()}")

		' TimeSpan examples
		Dim timeSpan As TimeSpan = System.TimeSpan.FromMinutes(123)
		content.Add($"TimeSpan of 123 minutes: {timeSpan.Humanize()}")

		' Number examples
		Dim number As Integer = 12345
		content.Add($"Number 12345 in words: {number.ToWords()}")
		content.Add($"Ordinal of 21: {21.ToOrdinalWords()}")

		' Pluralization examples
		Dim singular As String = "car"
		content.Add($"Plural of 'car': {singular.Pluralize()}")
		Dim plural As String = "children"
		content.Add($"Singular of 'children': {plural.Singularize()}")

		' Byte size examples
		Dim bytes As Long = 1048576
		content.Add($"1,048,576 bytes: {bytes.Bytes().Humanize()}")

		Return content
	End Function
End Class
$vbLabelText   $csharpLabel

Humanizer C# (Cómo funciona para desarrolladores): Figura 11 - Salida PDF

Conclusión

Humanizer es una biblioteca indispensable para los desarrolladores .NET que deseen crear aplicaciones que presenten la información en un formato legible y fácil de usar. Su amplia gama de funciones, desde la humanización de la fecha y la hora hasta el formato de números y enumeraciones, lo convierten en una herramienta versátil para mejorar la usabilidad de las aplicaciones. Gracias a Humanizer, los desarrolladores pueden ahorrar tiempo y esfuerzo a la hora de aplicar una lógica de formato personalizada, lo que garantiza que sus aplicaciones comuniquen los datos de forma más eficaz a los usuarios finales.

Del mismo modo, IronPDF ofrece completas funciones de generación y manipulación de PDF, lo que lo convierte en una excelente opción para crear y manipular documentos PDF en proyectos C#. Juntos, Humanizer e IronPDF pueden mejorar considerablemente la funcionalidad y presentación de las aplicaciones .NET. Para obtener más detalles sobre las licencias de IronPDF, consulte la Información de Licencias de IronPDF. Para explorar más a fondo, consulta nuestro Tutorial Detallado sobre Conversión de HTML a PDF.

Chipego
Ingeniero de software
Chipego tiene una habilidad natural para escuchar que le ayuda a comprender los problemas de los clientes y a ofrecer soluciones inteligentes. Se unió al equipo de Iron Software en 2023, después de estudiar una licenciatura en Tecnología de la Información. IronPDF e IronOCR son los dos productos en los que Chipego se ha centrado, pero su conocimiento de todos los productos crece día a día, a medida que encuentra nuevas formas de ayudar a los clientes. Disfruta de lo colaborativa que es la vida en Iron Software, con miembros del equipo de toda la empresa que aportan su variada experiencia para contribuir a soluciones eficaces e innovadoras. Cuando Chipego está lejos de su escritorio, a menudo se le puede encontrar disfrutando de un buen libro o jugando al fútbol.
< ANTERIOR
TensorFlow .NET (Cómo funciona para desarrolladores)
SIGUIENTE >
OpenAPI .NET (Cómo funciona para los desarrolladores)