2017-01-23 6 views
0

私はSwiftで新しいです。 私は予算申請をしようとしています。このアプリは、キーボードのような電卓を持っています。私の考えは、ユーザーがお金アプリを入力すると自動的に小数点以下の桁が追加されます。例えばSwift 3.0で入力中に文字列内の1文字を後ろに移動する方法は?

あなたは1230を入力すると、それはあなたに12.30を与え、それは私がダウンして、以下の数行のコードを書いた1.23

を表示する123を入力します。問題は、最初の数字の後に小数点を追加することができるということです。これは、X.XXXXXとして表示することができます

私はString.index(おそらくインデックスを増やす?)とNSNumber/NSString形式でこの問題を解決しようとしました。しかし、私はこれが正しい方向であるかどうかはわかりません。スウィフトで​​が限り多くの「単純明快」ではありません

let number = sender.currentTitle! 
    let i: String = displayPayment.text! 

    if (displayPayment.text?.contains("."))!{ 

     displayPayment.text = i == "0" ? number : displayPayment.text! + number 

    } 
    else { 

    displayPayment.text = i == "0" ? number : displayPayment.text! + "." + number 

    } 
+0

最も簡単な解決策は、ユーザーが小数点以下を入力することです。なぜなら、$ 123.00の代わりに12300を入力するのは面倒かもしれないからです。だから彼らは123を入力することができ、それは123.00で小数をとるでしょう。 –

+0

可能な複製http://stackoverflow.com/a/29783546/2303865 –

答えて

0

インデックスは、単純に起因する文字列を内部的に表現されているどのように、したいと思います。あなただけのユーザー入力の最後の位置に2番目の前で.を追加したい場合は、このようにそれを行うことができます:1230resultの入力のためにそう

let amount = "1230" 
var result = amount 

if amount.characters.count >= 2 { 
    let index = amount.index(amount.endIndex, offsetBy: -2) 
    result = amount[amount.startIndex..<index] + "." + amount[index..<amount.endIndex] 
} else { 
    result = "0.0\(amount)" 
} 

12.30になります。特定のニーズに応じて調整することができます。たとえば、ユーザーが30を入力した場合、このコードは.30になります(これはあなたが望むものかもしれません)。

関連する問題