আমি কীভাবে এমন কোনও সংখ্যায় কমা যুক্ত করব যা আমি দ্রুত JSON থেকে পুনরুদ্ধার করছি।
Example
31908551587 to
31,908,551,587
আমি খুব বিভ্রান্ত এবং আমার কী করতে হবে তা সম্পর্কে কোন ধারণা নেই
আমি কীভাবে এমন কোনও সংখ্যায় কমা যুক্ত করব যা আমি দ্রুত JSON থেকে পুনরুদ্ধার করছি।
Example
31908551587 to
31,908,551,587
আমি খুব বিভ্রান্ত এবং আমার কী করতে হবে তা সম্পর্কে কোন ধারণা নেই
উত্তর:
আপনি এটি দিয়ে করতে পারেন NSNumberFormatter
সুইফট 4
let largeNumber = 31908551587
let numberFormatter = NumberFormatter()
numberFormatter.numberStyle = .decimal
let formattedNumber = numberFormatter.string(from: NSNumber(value:largeNumber))
সুইফট 3
let largeNumber = 31908551587
let numberFormatter = NumberFormatter()
numberFormatter.numberStyle = NumberFormatter.Style.decimal
let formattedNumber = numberFormatter.string(from: NSNumber(value:largeNumber))
সুইফট 2
let largeNumber = 31908551587
let numberFormatter = NSNumberFormatter()
numberFormatter.numberStyle = NSNumberFormatterStyle.DecimalStyle
let formattedNumber = numberFormatter.stringFromNumber(largeNumber)
Üzgür এরসিলের উত্তরের প্রসারকে প্রসারিত করে, আপনি প্রসারিতভাবে এক্সটেনশন দিয়ে কার্যকারিতা আলাদা করতে পারবেন:
extension Int {
func withCommas() -> String {
let numberFormatter = NumberFormatter()
numberFormatter.numberStyle = .decimal
return numberFormatter.string(from: NSNumber(value:self))!
}
}
তারপরে আপনার কোডটিতে এটি ব্যবহার করতে:
largeNumber.withCommas()
জুয়ান ফ্রাঙ্ক জিমনেজের জবাবটি প্রসারিত করার সাথে সাথে আমি ফর্ম্যাটরটিকে সিঙ্গলটনে রাখার পরামর্শ দেব, যেহেতু একটি ফর্ম্যাটর ইনস্ট্যান্ট করা সাধারণত তুলনামূলকভাবে ব্যয়বহুল ক্রিয়াকলাপ। (আপনি ব্যবহারকারীর লেখার সাথে সাথে চলতে ফরম্যাট করলে তা পারফরম্যান্সকে প্রভাবিত করতে পারে))
extension Int {
private static var commaFormatter: NumberFormatter = {
let formatter = NumberFormatter()
formatter.numberStyle = .decimal
return formatter
}()
internal var commaRepresentation: String {
return Int.commaFormatter.string(from: NSNumber(value: self)) ?? ""
}
}
এক্সটেনশনের একটি সাধারণ ড্রপ যা এর এক্সটেনশনের মাধ্যমে একটি চলক সরবরাহ করবে Int
।
জুলিয়ানের উত্তরে যেমন উল্লেখ করা হয়েছে, এটি পারফরম্যান্সের কারণে স্থিতিশীল বিন্যাস ব্যবহার করে।
extension Int {
private static var numberFormatter: NumberFormatter = {
let numberFormatter = NumberFormatter()
numberFormatter.numberStyle = .decimal
return numberFormatter
}()
var delimiter: String {
return Int.numberFormatter.string(from: NSNumber(value: self)) ?? ""
}
}
এটি ব্যবহার করতে:
let number = 31908551587
print(number.delimiter) // 31,908,551,587
internal var
এবং আপনার কাছে রয়েছে var
। আপনার উত্তর কথোপকথনে কী যুক্ত করে? এছাড়াও, আমি বলব আপনার পরিবর্তনশীল delimiter
বিভ্রান্তিমূলক। জুলিয়েনস commaRepresentation
অনেক বেশি দরকারী।
এটি কমা অবস্থান নির্ধারণের একটি অতিরিক্ত উপায়। ধরা যাক আমি 10000000 নম্বরটি "1,00,00,000" হিসাবে মুদ্রিত হতে চাই
let numberFormatter = NumberFormatter()
numberFormatter.numberStyle = .decimal
numberFormatter.groupingSize = 3
numberFormatter.secondaryGroupingSize = 2
numberFormatter.string(from: 10000000)
আমি টেক্সটফিল্ডের জন্য ক্লাস তৈরি করেছি। এটি কেবল আপনার পাঠ্যক্ষেত্র শ্রেণিতে সেট করুন। প্রাক্তন- 1234567 লিখুন It এটি এটিকে 1,234,567 এ রূপান্তর করবে দশমিক প্রবেশের জন্যও কাজ করবে, দশমিকের পরে দুটি অঙ্ক নেবে।
class AmountField: UITextField {
private var isFirstDecimal : Bool = true
override func willMove(toSuperview newSuperview: UIView?) {
addTarget(self, action: #selector(editingChanged), for: .editingChanged)
keyboardType = .decimalPad
textAlignment = .left
placeholder = "0.0"
editingChanged()
}
override func deleteBackward() {
var currentText = self.text ?? ""
currentText = String(currentText.dropLast())
self.text = currentText
editingChanged(self)
}
@objc func editingChanged(_ textField: UITextField? = nil) {
var doubleStr = textField?.text ?? "00"
let decimalCount = doubleStr.components(separatedBy: ".")
if decimalCount.count > 2 {
var currentText = self.text ?? ""
currentText = String(currentText.dropLast())
self.text = currentText
return
}
if doubleStr.contains(".") && isFirstDecimal == true {
self.text = doubleStr
isFirstDecimal = false
return
}
else if !(doubleStr.contains(".")) {
isFirstDecimal = true
}
let doubleStrTemp = doubleStr.replacingOccurrences(of: ",", with: "")
if doubleStrTemp != "" {
if let n = Decimal(string: doubleStrTemp )?.significantFractionalDecimalDigits {
if n > 2 {
var currentText = self.text ?? ""
currentText = String(currentText.dropLast())
self.text = currentText
return
}
}
}
doubleStr = doubleStr.replacingOccurrences(of: ",", with: "")
let doube = Double(doubleStr)
let numberFormatter = NumberFormatter()
numberFormatter.numberStyle = NumberFormatter.Style.decimal
if doube != nil {
let formattedNumber = numberFormatter.string(from: NSNumber(value:doube!))
self.text = formattedNumber
}
}}
extension Decimal {
var significantFractionalDecimalDigits: Int {
return max(-exponent, 0)
}}