将Swift String分成3个符号的组

时间:2015-10-23 09:10:57

标签: string swift divide

我正在为货币字符串制作格式化程序,例如我有Int

let a: Int = 10
let b: Int = 10000
let c: Int = 10000000

我希望它们的格式如下:

let a1:String = "10"
let b1:String = "10 000"
let c1:String = "10 000 000"

所以我需要Swift中的功能(或扩展名)优雅,你可以建议=)你有一个Int作为输入参数,你应该把它作为String输出" "(空格符号)从右到左每3个符号。

3 个答案:

答案 0 :(得分:0)

这可能会对您有所帮助:

func formatNumberString(number : String?) -> String?
    {
        //"10 000 000 M"
        // 01234567890123   -> 2,6,10

        if (number?.isEmpty == true || number?.length <= 2) {
            return number
        }

        var i : Int = 0
        var newNumber : String = ""
        for character in (number?.characters)! {
            if ((i == 2 || i == 6 || i == 10) && character != " ")
            {
                newNumber = newNumber + " "
            }
            i++
        }

        return newNumber
    }

答案 1 :(得分:0)

您应该使用NSNumberFormatter格式化您的号码:

    func numberToCurrency(number: Int) -> String {
        let formatter: NSNumberFormatter = NSNumberFormatter()

        formatter.numberStyle = .CurrencyStyle

        formatter.positiveSuffix = " M"
        formatter.currencySymbol = ""
        formatter.maximumFractionDigits = 0
        formatter.currencyGroupingSeparator = " "
        formatter.usesGroupingSeparator = true
        return formatter.stringFromNumber(number)!
    }

print(numberToCurrency(1000))将打印1 000 M。如果您不想显示M字符,请设置formatter.positiveSuffix = ""

答案 2 :(得分:0)

你可以使用它作为扩展名,只要输入是字符串

就调用
let requiredN =  "10000000".convertToFormat()

这是字符串

的扩展名
extension String

{
    func convertToFormat() -> String
    {
        return (NSNumberFormatter.localizedStringFromNumber(Int(self)!, numberStyle: NSNumberFormatterStyle.DecimalStyle) as String).stringByReplacingOccurrencesOfString(",", withString: " ")

    }
}

如果输入值为Int call

let requiredN =  10000000.convertToFormat()

和Int

的扩展名
extension Int

{
    func convertToFormat() -> String
    {
        return (NSNumberFormatter.localizedStringFromNumber(self, numberStyle: NSNumberFormatterStyle.DecimalStyle) as String).stringByReplacingOccurrencesOfString(",", withString: " ")

    }
}