2017-09-27 3 views
1

を使用してそれを検証し、私は次のような状況を再現したいと思います:、私は文字列を持っている文字列を分割し、角度2とイオン

半分に私はそれを分割したいのは、

123BCP456GF789 

をしましょうと不足している番号を挿入して、正しい場合はそれを検証するようにユーザーに依頼します。

それはこのようになります:私はこれを行うには角度2とイオン2を使用してい

123B <ion-input></ion-input> F789 

、誰も私を助けることができるならば、私は感謝しています。

のは、私はこの配列を持っているとしましょう:

numberList = ['123BCP456GF789', '46487951', '65135564', '46489633']; 

      <ion-list> 
       <ion-item> 
        <ion-label stacked primary>Complete with the mising number</ion-label> 
        <ion-item>{{numberList_firstpart}}</ion-item> 
        <ion-input></ion-input> 
        <ion-item>{{numberList_lastpart}}</ion-item> 
       </ion-item> 
      </ion-list> 

ありがとう!

答えて

2

AngularJsから独立した簡単な解決策は、することができます:

var numberList = ['123BCP456GF789', '46487951', '65135564', '46489633']; 

numberList.forEach(function(element) { 

    //total length of the string 
    var elLength = element.length; 

    //get the max number of characters usable for first and second part 
    var singleElementLength = Math.ceil(elLength/3); 

    //the first part of the string 
    var firstPart = element.substring(0, singleElementLength); 

    //the last part of the string 
    var lastPart = element.substring(element.length-singleElementLength, element.length); 

    //this one should be entered by user 
    var middlePart = element.replace(firstPart, '').replace(lastPart, ''); 

    console.log(firstPart); 
    console.log(middlePart); 
    console.log(lastPart); 


}); 

出力は次のようになります。

"123BC" 
"P456" 
"GF789" 

"464" 
"87" 
"951" 

"651" 
"35" 
"564" 

"464" 
"89" 
"633" 

したい場合は、あなたの代わりにMath.ceil()Math.floor()を使用することができます。これを実行すると発生します中間の部分を長くするには、以下の出力をご覧ください。

"123B" 
"CP456G" 
"F789" 

"46" 
"4879" 
"51" 

"65" 
"1355" 
"64" 

"46" 
"4896" 
"33" 

ご注意:この方法を使用するには、少なくとも3文字以上の文字列を使用する必要があります(おそらくそれ以上は、Math.ceil()Math.floor()の間で使用するものに依存します)。私はあなたのためにいくつかのコントロールを追加することをお勧めします。

+0

これは私には起こっていないので、これはhttps://stackoverflow.com/users/4572652/math-louresでも 'numberList'の分割に役立つためです。うまくいった。 –

0

あなたの仕事は、二つある:

  1. は、ユーザー入力のキャプチャ、および
  2. は、ユーザーの入力をキャプチャするには、正しい答え

に対するユーザの入力を比較すると、いつでもデータ入力を結合ですテキスト中のユーザキー、例えば

<ion-input (keyup)="captureInput($event)"></ion-input> 

データ入力をキャプチャする方法は複数あります。それは、正しい答えと比較したいとき(例えば、ボタンのクリック、フォーカスの喪失など)に依存します。

最後の部分は正しい答えとの比較ですJavascriptの正規表現のテスト、例えば...

/the correct answer/.test(`${ this.first_part }${ this.input }${ this.last_part }`) 

あなたの実際の実装は、コーディング細目を決定しますが、うまくいけば、あなたは私が言っていることの要点を取得します。

これが役に立ちます。