// assumes s is sorted static S formatCharRange(S s) { new L l; for (int i = 0; i < l(s); ) { int j = i+1; while (j < l(s) && s.charAt(j) == (char) (((int) s.charAt(j-1))+1)) ++j; if (j == i+1) l.add(S.format("%X", (int) s.charAt(i))); else l.add(S.format("%X", (int) s.charAt(i)) + "-" + S.format("%X", (int) s.charAt(j-1))); i = j; } ret join(" ", l); }