Вот решение Scala. Я не доволен попыткой заставить его выглядеть коротким - я пожертвовал небольшим количеством удобочитаемости: (
object NumSpeller { val digits = Array("","one","two","three","four","five","six","seven","eight","nine") val teens = Array("ten", "eleven", "twelve", "thirteen", "fourteen", "fifteen", "sixteen", "seventeen", "eighteen", "nineteen") val tens = Array("", "ten", "twenty", "thirty", "fourty", "fifty", "sixty", "seventy", "eighty", "ninety") val thousands = Array("", "thousand", "million", "billion", "trillion", "quadrillion", "quintillion") def spellGroup(num:Int) = { val (v3, v2, v1) = ((num / 100) % 10, (num / 10) % 10, num % 10) val hs = v3 match { case 0 => ""; case d => digits(d) + " hundred " } val ts = v2 match { case 0 => digits(v1) case 1 => teens(v1) case _ => v3 match { case 0 => tens(v2); case _ => tens(v2) + "-" + digits(v1) } } hs + ts } def numberGroups(num:Long) = { def _numberGroups(num:Long, factor:Int):List[(Double,Int)] = factor match { case 0 => List((num % 1000,0)) case _ => ((num / Math.pow(1000, factor)) % 1000, factor) :: _numberGroups(num, factor - 1) } val ints = _numberGroups(num, 6) map (x => (x._1.asInstanceOf[Int],x._2)) ints dropWhile (x => x._1 == 0.0) } def spell(num:Long) = num match { case 0 => "zero"; case _ => (numberGroups(num) map { x => spellGroup(x._1) + " " + thousands(x._2) + " " }).mkString.trim } }
Использование:
NumSpeller.spell(458582)
Если вы хотите минимизировать ASP.NET AJAX JavaScript, убедитесь, что вы обновили раздел компиляции вашего web.config, чтобы отключить режим отладки:
<compilation debug="false">
Это гарантирует, что файлы ScriptResource будут уменьшены, однако, если вы не предоставили минифицированные версии ваших файлов JS, они не будут затронуты .
Вы когда-нибудь видели Ajax Minifier, описанный в этой записи блога ScottGu ?
Возможно, это именно то, что вы ищете.