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

170
Vistas
¿Por qué StartsWith devuelve el valor incorrecto solo en mi máquina?

El siguiente código funciona en la máquina de "todos", excepto en la mía:

 var foo = "caa"; var bar = "ca"; if (foo.StartsWith(bar, false, CultureInfo.GetCultureInfo("no"))) Console.WriteLine($"{foo} starts with {bar}"); else { Console.WriteLine($"{foo} does not start with {bar}"); }

Probé en .net 5.0.400, 5.0.403, 6.0.100 - todas las impresiones 'caa no comienzan con ca'. No he copiado los caracteres de ningún lado, literalmente los escribo.

Entiendo que esto es realmente solo en mi computadora, pero no entiendo por qué o qué está causando esto.

Editar: estoy en Windows 10 - OS Build: 19043.1348. nb-NO teclado, idioma de la interfaz de usuario de Windows en EE. UU.

Editar: Agregado si (foo.StartsWith(bar, false, CultureInfo.GetCultureInfo("no") - sin cambios en el comportamiento.

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

reproducción:

 System.Threading.Thread.CurrentThread.CurrentCulture = new CultureInfo("nb-NO"); var foo = "caa"; var bar = "ca"; if (foo.StartsWith(bar)) { Console.WriteLine($"{foo} starts with {bar}"); } else { Console.WriteLine($"{foo} does not start with {bar}"); }

Desde .NET 5, la comparación de cadenas se realiza utilizando diferentes bibliotecas de comparación de cadenas (ICU) . En noruego, "aa" aparentemente no es lo mismo que "a" + "a". Consulte Cambios de comportamiento al comparar cadenas en .NET 5+ .

Comparar (gracias @Charlieface ):

  • https://dotnetfiddle.net/19rGWv : .NET 4.7.2: "caa comienza con ca"
  • https://dotnetfiddle.net/PG7aTY : .NET 6: "caa no comienza con ca"

Querrá una comparación ordinal (valor numérico de carácter):

 foo.StartsWith(bar, StringComparison.Ordinal)
over 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