Excel順ソート

30分プログラム、その790。AAがZのあとにでてくるExcel順ソートを書いてみました。
Excelの列ラベルはZのあとにAAがでてくるから、辞書順ソートじゃうまくいかないよねー、というお話。[twitter:@ueda51]さんのつぶやきにインスパイアされた気がするけれど、あらためて探したらみつからなった。

使い方

scala> List("a","b","aa","zz","c").sort(excelCompare(_,_))
res17: List[java.lang.String] = List(a, b, c, aa, zz)

ソースコード

def excelCompare(x : String, y : String) : Boolean = {
  val x_len = x.size
  val y_len = y.size
  if(x_len == y_len){
    x < y
  }else{
    x_len < y_len
  }
}

println(excelCompare("a","b"))
println(excelCompare("a","c"))
println(excelCompare("a","aa"))
println(excelCompare("z","aa"))

List("a","b","aa","zz","c").sort(excelCompare(_,_))