Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

137
Vistas
¿Puedo usar la expresión regular en C# con cambio de caso?

¿Puedo escribir el cambio de caso en C # como este?

 switch (string) case [a..z]+ // do something case [A..Z]+ // do something ....
about 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

Sí, puede hacerlo en C# 7 (y nadie se dio cuenta de que había usado el carácter de rango incorrecto en la clase de caracteres .. en lugar de - ). Actualizado ahora con un ejemplo un poco más útil que realmente funciona:

 using System.Text.RegularExpressions; string[] strings = {"ABCDEFGabcdefg", "abcdefg", "ABCDEFG"}; Array.ForEach(strings, s => { switch (s) { case var someVal when new Regex(@"^[az]+$").IsMatch(someVal): Console.WriteLine($"{someVal}: all lower"); break; case var someVal when new Regex(@"^[AZ]+$").IsMatch(someVal): Console.WriteLine($"{someVal}: all upper"); break; default: Console.WriteLine($"{s}: not all upper or lower"); break; } });

Producción:

 ABCDEFGabcdefg: not all upper or lower abcdefg: all lower ABCDEFG: all upper
about 4 years ago · Santiago Trujillo Denunciar

0

Un refinamiento menor en la excelente respuesta de David usando _ como descarte. Solo un valor de cadena muy simple como ejemplo.

 using System; using System.Text.RegularExpressions; public class Program { public static void Main() { string userName = "Fred"; int something = 0; switch (true) { case bool _ when Regex.IsMatch(userName, @"Joe"): something = 1; break; case bool _ when Regex.IsMatch(userName, @"Fred"): something = 2; break; default: break; } Console.WriteLine(something.ToString()); } }
about 4 years ago · Santiago Trujillo Denunciar

0

A partir de C# 8.0, la respuesta ahora es ¡SÍ!... más o menos.

Con 8.0, se introdujo la expresión de cambio . Puede usarlo para combinar muchos estilos diferentes de patrones como se muestra a continuación.

 string myValueBeingTested = "asdf"; string theResultValue = myValueBeingTested switch { var x when Regex.IsMatch(x, "[a..z]+") => "everything is lowercase", var y when Regex.IsMatch(y, "[A..Z]+") => "EVERYTHING IS UPPERCASE", "Something Specific" => "The Specific One", _ => "The default, no match scenario" };

Cómo funciona: la expresión de cambio necesita una variable en la que pueda alimentar los resultados. El ejemplo anterior usa la variable theResultValue para eso. A continuación, pasa al interruptor lo que se conoce como la expresión de rango representada por myValueBeingTested arriba. La construcción de caso familiar se reemplaza con una expresión de patrón seguida por el token => y juntos se denominan brazo de expresión . Cualquier cosa en el lado derecho del token de brazo terminará en la variable de resultado.

Normalmente, la expresión de cambio requiere que los patrones sean una constante de tiempo de compilación, y no puede ejecutar código arbitrario dentro de una expresión de cambio . Sin embargo, podemos usar un patrón de protección de casos usando la cláusula when para hacer uso de Regex como se muestra arriba. Cada caso debe conectarse en un brazo distinto con distintas variables desechables ( x e y arriba).

El tercer brazo que se muestra arriba es una cadena constante de tiempo de compilación para que coincida con algún texto específico si lo desea. El cuarto brazo que se muestra arriba usa el patrón _ , que es una especie de comodín similar a la antigua palabra clave default: También puede usar null en lugar de, o además de _ para manejar casos nulos por separado de cualquier otra cosa.

Pruébelo en mi ejemplo de .NET Fiddle aquí .

about 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda