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

273
Visualizações
¿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 Respostas
Responde à pergunta

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