Javascript - 如何从随机字符串中获取3位数,其中长度有时不是静态的?

时间:2016-04-14 06:45:42

标签: javascript google-chrome barcode qr-code

我有这个随机值,其中90%的时间t0,t1具有相同的长度。但10%的时间是特殊的。

var t0 ="6M1000000000000/1111111 XNFVSD XXXXXXXX 0298 0101010A0001 148";
var t1 ="6M1ABDDERREDDDDDD/EOPPP XPSWKQ X2222222 8081 1010101A0132 100 1221212 dfdf111";
var t2 ="6M1XEEDDD/XXXEEE        XTRY3U X1XXXXXX 0921 104Y011A114  148 01010101993938 11212>1122";

现在在所有情况下,我必须从(104Y011A114)获得3个值114,从(1010101A0132)获得132,从(0101010A0001)获得001。

我用过

var find_3_digit = 0;
var input = t2; // or t1, t0
for(var i = 0; i< input.length; i++ ){ 
    if( (i>=53) && (i<=56) ) {
      console.log('H - ', input[i]);            
      find_3_digit +=  input[i];
    }
}

但是因为t2是例外,我得到的值14不是114(这违反了我的逻辑)。

那么,我怎样才能获得:001 from t0132 from t1114 from t2

4 个答案:

答案 0 :(得分:1)

您可以拆分超过1个空格。返回包含您的数字的部分,我假设它始终为index 4,然后返回最后3个字符。

function getThreeDigits(string) {
    return String(string).split(/ +/)[4].substr(this.length - 3);
}

var t0 ="6M1000000000000/1111111 XNFVSD XXXXXXXX 0298 0101010A0001 148";
var t1 ="6M1ABDDERREDDDDDD/EOPPP XPSWKQ X2222222 8081 1010101A0132 100 1221212 dfdf111";
var t2 ="6M1XEEDDD/XXXEEE        XTRY3U X1XXXXXX 0921 104Y011A114  148 01010101993938 11212>1122";

getThreeDigits(t0); // 001
getThreeDigits(t1); // 132
getThreeDigits(t2); // 114

答案 1 :(得分:1)

首先从字符串中删除重复的空格,而不是在空白处分割,最后取第5个元素的最后3个字符:

&#13;
&#13;
$(document).ready(function() {
  var strings = [
    "6M1000000000000/1111111 XNFVSD XXXXXXXX 0298 0101010A0001 148",
    "6M1ABDDERREDDDDDD/EOPPP XPSWKQ X2222222 8081 1010101A0132 100 1221212 dfdf111",
    "6M1XEEDDD/XXXEEE        XTRY3U X1XXXXXX 0921 104Y011A114  148 01010101993938 11212>1122"
  ];

  var log = $('#log');

  $.each(strings, function() {
    var string = this;

    //remove duplicate spaces
    string = string.replace(/\s+/g, ' ');
    //split on spaces
    var subStrings = string.split(' ');
    //take last 3 chars
    var value = subStrings[4].slice(-3);

    log.append(this + ' - ' + subStrings[4].slice(-3) + '<br/>');
  });
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="log">

</div>
&#13;
&#13;
&#13;

答案 2 :(得分:1)

可以使用此功能完成:

function GetDigits(input) {
   var find_3_digit = "";
   for (var i = 56; find_3_digit.length < 3; i--) {
      if (input[i] != " ")
         find_3_digit = input[i] + find_3_digit;
   }
   return find_3_digit;
}

请参阅 JSFiddle

答案 3 :(得分:0)

使用正则表达式!使用组获取所需的符号组并获取最后三个字符。