Unityで文字列を「良い感じ」にソートしてくれるEditorUtility.NaturalCompare()の紹介です。
Unity2020.1
いい感じにソート?
今、以下のように適当な文字列のリストを用意します。
abc5 abc 123 abc32 abc1234
これをLinqとかで機械的にソートすると以下のようになります。
123 abc abc1234 abc32 abc5
場合によってはこれでいいのですが、abc以下の数値を小さい順(つまり5 -> 32 -> 1234)に並べたいケースも少なく無いかと思います。
EditorUtility.NaturalCompare()はこの辺りをいい感じにソートしてくれるメソッドです。
使ってみる
それでは実際に使ってみます。
using System; using System.Collections.Generic; using UnityEditor; using UnityEngine; public class Example { [MenuItem("Example/Example")] public static void NaturalCompareExample() { var texts = new List<string> { "abc5", "abc", "123", "abc32", "abc1234", }; // NaturalCompareを使っていい感じにソート texts.Sort(EditorUtility.NaturalCompare); var result = string.Empty; foreach (var text in texts) { result += $"{text}{Environment.NewLine}"; } Debug.Log(result); } }
結果は以下のようになります。
123 abc abc5 abc32 abc1234
いい感じにソートされることが確認できました。