DEV Community

Cover image for Nomus: Normalización de strings en .NET
Juan Fernando Alzate
Juan Fernando Alzate

Posted on

Nomus: Normalización de strings en .NET

Cuando trabajas simultáneamente con APIs, bases de datos y aplicaciones frontend, es casi inevitable encontrarte con inconsistencias en las convenciones de nomenclatura. En el ecosistema moderno de desarrollo con .NET, donde conviven múltiples capas y sistemas con reglas distintas, lo que al equipo parece un detalle menor termina convirtiéndose en una fuente constante de fricción dentro del código.

Es ahí cuando paquetes como Nomus entran a intervenir.

En este artículo te enseñaré a instalar el paquete Nomus en .Net y a implementarlo con un ejemplo práctico, pero antes de empezar definamos:

¿Qué es Nomus?

Es un paquete NuGet diseñado para aplicaciones en .NET 8.0 y superiores, cuyo objetivo es simplificar la normalización y conversión de strings entre distintos estilos de casing.

¿Qué problema resuelve?

Cuando trabajas con múltiples sistemas, es común encontrarte con distintos formatos de nombres:

  • APIs que usan camelCase
  • Bases de datos con snake_case
  • Clases en PascalCase
  • URLs en kebab-case

Sin una herramienta adecuada, terminas escribiendo lógica manual para cada caso —lo que no solo consume tiempo, sino que introduce inconsistencias.

Nomus elimina ese problema con una API simple y directa.

Funcionalidades principales

Detecta: Detecta automáticamente el formato original del texto (UpperCase, PascalCase, TrainCase, etc).

Convierte: Convierte texto fácilmente entre múltiples formatos de manera intuitiva:

  • PascalCase → HolaMundo
  • camelCase → holaMundo
  • kebab-case → hola-mundo
  • snake_case → hola_mundo
  • Title Case → Hola Mundo

Todo esto en una sola línea de código, sin necesidad de expresiones regulares complejas ni lógica personalizada.

Empecemos

Instalación:

Opción 1: Desde Visual Studio, damos clic derecho en el nombre del proyecto, seleccionamos Manage NuGet Packages → Browse → Nomus

opción 1

Opción 2: Desde la consola:

dotnet add package Devjavu.Nomus
Enter fullscreen mode Exit fullscreen mode

Implementación:

Uso rápido

using Nomus;

// Detect naming style
var detected = Naming.DetectNamingStyle("votesUsers");
// "camelCase"

// PascalCase
var p = Naming.ToPascalCase("user_votes_details");
// UserVotesDetails

// camelCase
var c = Naming.ToCamelCase("UserVotesDetails");
// userVotesDetails

// snake_case
var s = Naming.ToSnakeCase("userVotesDetails");
// user_votes_details

// kebab-case
var k = Naming.ToKebabCase("userVotesDetails");
// user-votes-details
Enter fullscreen mode Exit fullscreen mode

Ejemplo práctico

Supongamos que tenemos este modelo:

public class UsuarioDto
{
    public string NombreCompleto { get; set; }
    public string FechaRegistro { get; set; }
}
Enter fullscreen mode Exit fullscreen mode

Por defecto, ASP.NET Core ya convierte a camelCase, pero si necesitas control total o formatos personalizados, puedes usar Nomus.

Transformamos el modelo con Nomus:

using Devjavu.Nomus;

var data = new Dictionary<string, object>()
{
    { "NombreCompleto", "Juan Alzate" },
    { "FechaRegistro", "2026-01-01" }
};

var transformed = data.ToDictionary(
    key => Nomus.ToCamelCase(key.Key),
    value => value.Value
);
Enter fullscreen mode Exit fullscreen mode

Resultado:

{
  "nombreCompleto": "Juan Alzate",
  "fechaRegistro": "2026-01-01"
}
Enter fullscreen mode Exit fullscreen mode

Podemos ir mas allá y crear un helper reutilizable:

public static class NomusExtensions
{
    public static Dictionary<string, object> ToCamelCaseKeys(this object obj)
    {
        var dict = obj.GetType()
            .GetProperties()
            .ToDictionary(
                prop => Nomus.ToCamelCase(prop.Name),
                prop => prop.GetValue(obj)
            );

        return dict;
    }
}
Enter fullscreen mode Exit fullscreen mode

Lo usamos:

var usuario = new UsuarioDto
{
    NombreCompleto = "Juan Alzate",
    FechaRegistro = "2026-01-01"
};

var response = usuario.ToCamelCaseKeys();
Enter fullscreen mode Exit fullscreen mode

Bonus: generar slugs para URLs

Podemos utilizar Nomus para SEO o rutas limpias:

string titulo = "Curso de .NET para Principiantes";
string slug = Nomus.ToKebabCase(titulo);

// resultado: "curso-de-net-para-principiantes"
Enter fullscreen mode Exit fullscreen mode

¿Por qué usar Nomus?

Porque te permite:

  • Reducir código repetitivo.
  • Evitar errores en conversiones manuales.
  • Mantener consistencia en tu proyecto.
  • Mejorar la legibilidad del código.

Y lo más importante: enfocarte en lógica de negocio, no en manipulación de strings.

Conclusión

Nomus es una herramienta ligera pero poderosa que resuelve un problema cotidiano en el desarrollo de software. Si trabajas con múltiples formatos de nomenclatura en .NET, este paquete puede ahorrarte tiempo y dolores de cabeza.

Top comments (0)