PHP:将数组中的数值转换为对应英文单词的最优方法
批量将数组数字转换为英文单词的实现方案
嘿,这个需求其实很好解决!既然你已经了解NumberFormatter可以处理单个数字的拼写转换,那只需要结合Swift的高阶函数,就能轻松搞定整个数组的批量处理啦。
核心思路
利用NumberFormatter配置好英文拼写的规则,再通过数组的compactMap方法遍历每个元素,完成逐个转换——这样既复用了你熟悉的工具,又让代码简洁高效。
完整代码示例
// 初始化并配置NumberFormatter let numberFormatter = NumberFormatter() numberFormatter.numberStyle = .spellOut // 设置为拼写数字的样式 numberFormatter.locale = Locale(identifier: "en_US") // 指定英文环境,确保输出英文单词 // 你的输入数组 let inputNumbers = [2, 4, 7, 8] // 批量转换数组元素 let numberWords = inputNumbers.compactMap { number in numberFormatter.string(from: NSNumber(value: number)) } print(numberWords) // 输出结果: ["two", "four", "seven", "eight"]
关键细节说明
- 为什么用
compactMap而不是普通的map?
因为numberFormatter.string(from:)返回的是可选字符串(String?),如果遇到无法转换的数值(比如超出拼写范围的极大数),compactMap会自动过滤掉nil值,避免最终数组里出现无效的可选元素。 - 如果需要适配其他语言,只需要修改
locale参数即可,比如改成Locale(identifier: "fr_FR")就能输出法语拼写。
这样就快速实现了你想要的数组转换需求,代码可读性和扩展性都很不错~
内容的提问来源于stack exchange,提问作者Gordon Cowtan
相关产品推荐
相关产品推荐

