使用 ICU 将数字(字符串)拼写为整数
Spelled-out number (string) to integer using ICU
我需要将字符串转换为整数。例如,我想将 sixth 转换为 6。
我使用 IBM 的库 ICU 做了相反的一个(6 → 第六)。
private val String.spellout: String
get() {
val esFormatter = RuleBasedNumberFormat(Locale.ENGLISH, RuleBasedNumberFormat.SPELLOUT)
return esFormatter.format(this.toDouble(), "%spellout-ordinal")
}
我想创建另一种方法,采用该拼写字符串并将其转换为双精度数(第六 → 6)
从这里的评论中获得帮助后,这是我的解决方案,以防其他人需要它:
private val String.numberFromSpelledOut: Boolean
get() {
val esFormatter = RuleBasedNumberFormat(Locale.ENGLISH, RuleBasedNumberFormat.SPELLOUT)
return try {
return esFormatter.parse(this)
} catch (e: ParseException) {
""
}
}
这不应该为无效的拼写输入抛出异常。
我需要将字符串转换为整数。例如,我想将 sixth 转换为 6。
我使用 IBM 的库 ICU 做了相反的一个(6 → 第六)。
private val String.spellout: String
get() {
val esFormatter = RuleBasedNumberFormat(Locale.ENGLISH, RuleBasedNumberFormat.SPELLOUT)
return esFormatter.format(this.toDouble(), "%spellout-ordinal")
}
我想创建另一种方法,采用该拼写字符串并将其转换为双精度数(第六 → 6)
从这里的评论中获得帮助后,这是我的解决方案,以防其他人需要它:
private val String.numberFromSpelledOut: Boolean
get() {
val esFormatter = RuleBasedNumberFormat(Locale.ENGLISH, RuleBasedNumberFormat.SPELLOUT)
return try {
return esFormatter.parse(this)
} catch (e: ParseException) {
""
}
}
这不应该为无效的拼写输入抛出异常。