0

私のプロジェクトでは、ユーザーはレコードのコピーごとに一意の番号を入力する必要があります。この一意の番号形式は事前定義されています (形式を設定する別のオプションがあります。たとえば、形式が「 CCNNN 」の場合、2 文字と 3 つの数字を意味します。つまり、次のようになります。 ' AA001 ' から ' AA999 ' まで続きます。このタイプの形式はレコードのすべてのセクションに設定されます。

この一意の番号には、4 つのプレフィックス文字が含まれる可能性があり、サフィックスは数字になります。おそらく、3 桁から ' N ' 番号まで (例: ' TSS0000000001234 ') になる可能性があります。

私がする必要があるのは、最初のレコードを入力した後、データベースからそれを取得し、その値を1つ増やして、それを入力フィールドに保持することです(事前定義された形式では問題ありません)。つまり、次のレコードに入る前に、削減のようなものですユーザーの労力 (ユーザーがレコード入力フィールドを送信した後に「 TS001 」のように入力すると、次のエントリの一意の番号「 TS002 」と同様に、一意の番号のすべての形式でインクリメントを維持する準備が整います。)

私はこの方法で試しました(私は完全に間違ったロジックを使用していると思います)http://jsfiddle.net/hatwar/5bk6E/ ...

var givenInput="TS0001";//input different format eg: MAM7612 or HSD8723

// hear prefix possibly character and sufix probably integer


var separation = givenInput.substring(2); // 


var gettingLastNo  = separation[separation.length-1];


var incrementedValue = gettingLastNo.replace(/(\d+)/, function(){return arguments[1]*1+1});

var conditionCheck = '1';

if(incrementedValue.length > conditionCheck){

   document.write((givenInput.substring(0, givenInput.length-2))+incrementedValue);     

}else{

   document.write((givenInput.substring(0, givenInput.length-1))+incrementedValue);
}

ユーザーが「TS1、TS2、TS3...」のような一意の番号を入力しても問題ありません簡単にインクリメントできますが、おそらく「ゼロ」が含まれているため、上記のように試しましたが、ユーザーが「TS199」のように入力しても失敗します別の条件を保持してインクリメントしますが、それはより良いロジックではありません

任意のヘルプが割り当てられます。ありがとう。

4

2 に答える 2

1

この簡単なコードで試してみてください。これはあなたが説明するように結果を与えるでしょう。

var givenInput = "TSBC020145";
var myNumber = givenInput.match(/\d+/g)[0];
var myString = givenInput.match(/\D+/g)[0];
var myIncrement = ++givenInput.match(/\d+/g)[0];

var myFinalNumber = myString + myNumber.substr(0, (myNumber.length -      myIncrement.toString().length))+myIncrement;

「myFinalNumber」には、必要な結果値があります。結果は「TSBC020146」になります。

于 2013-09-10T09:21:18.993 に答える
0

数値からプレフィックスを既に分割しているため、parseInt を使用して文字列から整数に変換できます。

var incrementedValue = parseInt(gettingLastNo) + 1;

事前にパターンがわからない場合は、正規表現を使用して入力を分割できます

var matched = givenInput.match(/^([^\d]+)(\d+)$/);

if (matched === null) {
    //process invalid input
} else {
  if (matched.length != 3) {
    //also invalid input
  } else {
     var prefix = matched[1];
     var inputNoLen = matched[2].length;
     var lastNo = parseInt(matched[2]);
     var nextNo = lastNo + 1;
     var ouputNo = "" + nextNo;
     if (outputNo.length < inputNoLen) { outputNo = Array(inputNoLen - outputNo.length + 1).join("0") + outputNo; }

  }
}
于 2013-09-10T08:10:56.530 に答える