Novidades do .NET 10: melhorias na ordenação numérica de strings
Este é o segundo artigo de mais uma série que iniciei recentemente e que cobre as novidades do .NET 10. Caso ainda não tenha acessado o primeiro post (ou deseje revê-lo), acesse o link a seguir:
.NET 10: primeiros testes com o Preview 1 + melhorias na manipulação de datas com ISOWeek
Neste novo artigo abordo uma melhoria envolvendo a ordenação de strings com conteúdo numérico, através de uma nova opção que foi incorporada ao enum CompareOptions (namespace System.Globalization): trata-se de CompareOptions.NumericOrdering, alternativa que pode ser utilizada em conjunto com a classe StringComparer (namespace System) em instruções que envolvam ordenação e comparação de valores numéricos em strings.
Podemos observar o uso de CompareOptions.NumericOrdering com StringComparer na listagem a seguir:
- Uma instância de StringComparer é gerada, recebendo como um dos parâmetros o valor CompareOptions.NumericOrdering (linhas 13 e 14);
- Ao acionarmos o método Equals nesta referência de StringComparer (linha 25) conseguimos determinar que 007 e 7 representam um mesmo valor, ao passo em que não há igualdade entre 30.49 e 30.489;
- Este tipo de comportamento também estará disponível para a utilização com o método Order em um array de strings (linha 34), com a correta ordenação de diferentes valores em texto que representam números de 6 a 10;
- E também com o método Contains, em um exemplo baseado no uso de uma instância do tipo HashSet (linha 41). Uma análise envolvendo a pesquisa do texto 10 identificará que o mesmo corresponde a 0010, um dos itens que compõem a instância mencionada.
O resultado da execução desta aplicação de testes pode ser observado na imagem seguinte:
Esse exemplo foi disponibilizado em um repositório do GitHub:
https://github.com/renatogroffe/DotNet10-ConsoleApp-Numeric-Ordering-for-String-Comparison
Caso achem útil esta solução, peço por favor um ⭐️ no repositório apoiando. Fica também o convite para que vocês me sigam lá no GitHub!