2017-01-16 4 views
2

、私は5つのuitextfieldsがあります。私の意図したユーザーはアラビア語の話し手なので、彼らが私のアプリを使うときは英語かアラビア語で番号をつけます。アラビア数字を英字に素早く変換する方法は?私のアプリで

アプリは英語の数字でうまく動作します。しかし、私がそれを実行し、アラビア語で数字を挿入すると、アプリケーションはテキストフィールドをすべて空であるかのように扱い、答えを0として返します。

テキストフィールドがnillではなく、アラビア数字を無視する?

これは「calButton」関数内のコードです:

 /*let value1 = Double(income.text ?? "") ?? 0 
    let value2 = Double(salaries.text ?? "") ?? 0 
    let value3 = Double(tools.text ?? "") ?? 0 
    let value4 = Double(maintinance.text ?? "") ?? 0 
    let value5 = Double(otherExpenses.text ?? "") ?? 0 
    let sum = value1 - (value2 + value3 + value4 + value5) 

    print("result is: \(sum)")*/ 



    let textFields = [income, salaries, tools, maintinance, otherExpenses] 
    var sum = 0.0 
    for textField in textFields { 
     if let number = Double((textField?.text!)!) { //checks that it is not nil AND a Double 
      sum += number 
     } 
    } 

    expensesTotal.text = String(sum) 
    // print("result is: \(sum)") 
+0

キーとなる辞書を使用してください。値は英語の数字です。 – Dasem

+1

'Double'イニシャライザは非常に単純です。この種の複雑な振る舞いについては、 'NumberFormatter'を使用したいと思うでしょうhttps://developer.apple.com/reference/foundation/numberformatter – Alexander

+0

"アラビア数字 "は私たちが毎日使っている十進数のシステムです。おそらく、「アラビア文字列を10進数に変換する」という意味ですか?また、入力と出力の例をいくつか提供できますか? –

答えて

6

あなたは英語最初にアラビア数字の文字列を変換する必要があり、その後の計算の一部を行います。

let numberStr: String = "٨٦٩١٢٨٨١" 
    let formatter: NumberFormatter = NumberFormatter() 
    formatter.locale = NSLocale(localeIdentifier: "EN") as Locale! 
    let final = formatter.number(from: numberStr) 
    let doubleNumber = Double(final!) 
    print("\(doubleNumber)") 
関連する問題