English Number to Myanmar Number (Swift)

English နံပတ်ကနေ မြန်မာ နံပတ်ကို ပြန်ပြောင်းဖို့အတွက် အတိုဆုံး ပုံစံ နဲ့ ဘယ်လို ရေးလို့ ရမလဲဆိုပြီး စမ်းကြည့်ထားတာပါ။

Code

var eng = 890

var k = "\(eng)".map { UnicodeScalar(String($0))!.value + 4112 }.reduce("") { "\($0)\(String(Character(UnicodeScalar($1)!)))" }
print(k)

Swift မှာ အဆင်ပြေတာက reduce က ပထမဆုံး အခန်းကနေ စတယ်။ reduce("") ဖြစ်သည့်အတွက် previous value က empty string ပဲဖြစ်နေသေးတယ်။

အကယ်၍ အနှုတ် ၊ဒဿမ တွေ ပါလာရင်တော့

var k = "\(eng)".map { (char) -> Int in
    let code = Int(UnicodeScalar(String(char))!.value)
    return (char == "." || char == "-") ? code : code + 4112
}.reduce("") { "\($0)\(String(Character(UnicodeScalar($1)!)))" }

ဆိုပြီး ရေးနိုင်ပါတယ်။

Int , Double စတာတွေထဲမှာ extension အနေနဲ့ သုံးမယ် ဆိုရင်

import Foundation

protocol MyanNum {}

extension MyanNum {
    func toMyanmarNumber() -> String? {
        
        guard let this = self as? NSNumber else {
            return nil
        }
        let value =  "\(this)".map { (char) -> Int in
            let code = Int(UnicodeScalar(String(char))!.value)
            return (code >= 48 && code <= 57) ? code + 4112 : code
            }.reduce("") { "\($0)\(String(Character(UnicodeScalar($1)!)))" }
        return value
    }
}

extension Int : MyanNum {}
extension Double : MyanNum {}

print(76.toMyanmarNo())
print(22.987.toMyanmarNo())

အဲဒီအခါမှာ Int, Double တွေကို တိုက်ရိုက် ခေါ်ပြီးတော့ မြန်မာ ဂဏန်း တန်ဖိုး ထုတ်နိုင်ပါတယ်။

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Discover more from Saturngod

Subscribe now to keep reading and get access to the full archive.

Continue reading