2017-07-30 110 views
0

我想要一種方法,當用戶輸入一個數字時,文本字段將用逗號和貨幣符號格式化數字,在這種情況下,我希望英鎊英鎊符號 - £Swift/Xcode - 向UITextField添加貨幣符號和逗號

例 -

用戶輸入30000,文本字段格式化輸入到£30,000

我目前確實有一個方法可以讓我做到這一點,但是,我不斷得到一個十進制/浮點數。

示例 - 用戶輸入30000,文本字段將輸入格式設置爲£30,000.00。我不希望.00在任何時間。

我該如何解決這個問題?

我試圖從float更改爲Int,但文本字段只是立即辭職。

這是我目前using-

extension String { 
    func currencyInputFormatting() -> String { 

     var number: NSNumber! 
     let formatter = NumberFormatter() 
     formatter.maximumFractionDigits = 2 
     formatter.minimumFractionDigits = 2 
     formatter.currencySymbol = "£" 
     formatter.numberStyle = .currencyAccounting 

     var amountWithPrefix = self 

     // remove from String: "$", ".", "," 
     let regex = try! NSRegularExpression(pattern: "[^0-9]", options: .caseInsensitive) 
     amountWithPrefix = regex.stringByReplacingMatches(in: amountWithPrefix, options: NSRegularExpression.MatchingOptions(rawValue: 0), range: NSMakeRange(0, self.characters.count), withTemplate: "") 

     let double = (amountWithPrefix as NSString).doubleValue 
     number = NSNumber(value: (double/100)) 

     // if first number is 0 or all numbers were deleted 
     guard number != 0 as NSNumber else { 
      return "" 
     } 

     return formatter.string(from: number)! 
    } 

的代碼,我需要一個有貨幣符號 - £,一個沒有。

有人能幫我嗎?

回答

0

您可以通過設置小數位數擺脫浮動點爲0

formatter.maximumFractionDigits = 0 
    formatter.minimumFractionDigits = 0 

並獲得與英鎊符號結果

formatter.currencySymbol = "£" 

而得到的結果,沒有任何跡象

formatter.currencySymbol = "" 
+0

非常感謝!我只需要改變一些代碼'let double =(amountWithPrefix as NSString).intValue number = NSNumber(value:(double/1))'現在它可以工作!你這麼多。 – SwiftLearner