tompazourek / NaturalSort.Extension

🔀 Extension method for StringComparison that adds support for natural sorting (e.g. "abc1", "abc2", "abc10" instead of "abc1", "abc10", "abc2").
MIT License
169 stars 13 forks source link

Sorting strings starting with a period #25

Closed riku22 closed 1 year ago

riku22 commented 1 year ago

Sorting strings that start with a period does not work as expected. where should i fix it?

Actual behavior

C:\scripts\NaturalSort.Extension\format.ps1
C:\scripts\NaturalSort.Extension\LICENSE
C:\scripts\NaturalSort.Extension\NaturalSort.Extension.sln
C:\scripts\NaturalSort.Extension\NaturalSort.Extension.sln.DotSettings
C:\scripts\NaturalSort.Extension\NaturalSort.Extension.snk
C:\scripts\NaturalSort.Extension\README.md
C:\scripts\NaturalSort.Extension\.appveyor.yml
C:\scripts\NaturalSort.Extension\.editorconfig
C:\scripts\NaturalSort.Extension\.gitattributes
C:\scripts\NaturalSort.Extension\.gitignore

Expected behavior

C:\scripts\NaturalSort.Extension\.appveyor.yml
C:\scripts\NaturalSort.Extension\.editorconfig
C:\scripts\NaturalSort.Extension\.gitattributes
C:\scripts\NaturalSort.Extension\.gitignore
C:\scripts\NaturalSort.Extension\format.ps1
C:\scripts\NaturalSort.Extension\LICENSE
C:\scripts\NaturalSort.Extension\NaturalSort.Extension.sln
C:\scripts\NaturalSort.Extension\NaturalSort.Extension.sln.DotSettings
C:\scripts\NaturalSort.Extension\NaturalSort.Extension.snk
C:\scripts\NaturalSort.Extension\README.md
tompazourek commented 1 year ago

Thanks for contributing with your report.

I cannot reproduce your problem, I'm getting the values you marked as "Expected behavior", so everything is working as it should for me.

Can you please share a code snippet to reproduce the issue?

riku22 commented 1 year ago

Sorry. It seems my example was wrong. I was actually trying to sort a list of files containing directory names. When I sorted without adding a directory name, the expected result was output. I'm going to modify the program somehow and consider the method.

Below is the code just in case.

using System;
using System.Linq;
using NaturalSort.Extension;

class Program{
static void Main(){
string[] random_array = {@"C:\scripts\NaturalSort.Extension\format.ps1", @"C:\scripts\NaturalSort.Extension\.editorconfig", @"C:\scripts\NaturalSort.Extension\LICENSE", @"C:\scripts\NaturalSort.Extension\.gitattributes", @"C:\scripts\NaturalSort.Extension\NaturalSort.Extension.sln", @"C:\scripts\NaturalSort.Extension\.appveyor.yml", @"C:\scripts\NaturalSort.Extension\NaturalSort.Extension.sln.DotSettings", @"C:\scripts\NaturalSort.Extension\.gitignore", @"C:\scripts\NaturalSort.Extension\NaturalSort.Extension.snk", @"C:\scripts\NaturalSort.Extension\README.md"};
string[] ordered = random_array.OrderBy(x => x, StringComparison.OrdinalIgnoreCase.WithNaturalSort()).ToArray();
Console.WriteLine("Source array:");
foreach (string value in random_array){
Console.WriteLine(value);
}
Console.WriteLine("Sort result:");
foreach (string value in ordered){
Console.WriteLine(value);
}
}
}
tompazourek commented 1 year ago

Great, no problem.

I'm closing this issue for now. Feel free to re-open it or create a new one in case you encounter something else.