Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

146
Visualizações
¿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 ....
over 4 years ago · Santiago Trujillo
3 Respostas
Responde à pergunta

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
over 4 years ago · Santiago Trujillo Relatório

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()); } }
over 4 years ago · Santiago Trujillo Relatório

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í .

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda