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