Javascript - 如何从长度有时不是静态的随机字符串中获取 3 位数字?
Javascript - how to get 3 digit from a random string where the length is sometimes not static?
我有这个随机值,其中 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 t0
、132 from t1
、114 from t2
?
使用正则表达式!使用组获取所需的符号组并获取最后三个字符。
您可以拆分超过 1 个 space。 Return 包含您的数字的部分,我假设它始终是 index 4
,然后是 return 最后 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
首先从字符串中删除重复的白色 spaces,然后拆分为白色 space,最后取第 5 个元素的最后 3 个字符:
$(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/>');
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="log">
</div>
可以用这个函数来完成:
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
我有这个随机值,其中 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 t0
、132 from t1
、114 from t2
?
使用正则表达式!使用组获取所需的符号组并获取最后三个字符。
您可以拆分超过 1 个 space。 Return 包含您的数字的部分,我假设它始终是 index 4
,然后是 return 最后 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
首先从字符串中删除重复的白色 spaces,然后拆分为白色 space,最后取第 5 个元素的最后 3 个字符:
$(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/>');
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="log">
</div>
可以用这个函数来完成:
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