如何在jquery中从字符串中获取范围

How to get range from a string in jquery

本文关键字:字符串 获取 范围 jquery      更新时间:2023-09-26

我有一个字符串像SL45NU2154-60

现在我想从这个字符串中得到一个数组,比如

SL45NU2154
SL45NU2155
SL45NU2156
SL45NU2157
SL45NU2158
SL45NU2159
SL45NU2160

如何使用jquery或javascript实现此功能。

我已经试过了。首先,我将这个字符串与'-'分开,并找到一个具有SL45NU215460的数组。现在我不知道如何通过循环来创建数组。这是我的代码

var str = 'SL45NU2154-60';
var str_arr = str.split("-");
alert(str_arr);

你的jquery

  var main="SL45NU2154-60";
var arr=main.split('-');
var fnal=parseInt(arr[1]);
var last2=parseInt(arr[0].substr('-2'));
var firstval=arr[0].slice(0,-2);
for(var i=last2;i <= fnal;i++)
{
 alert(firstval+""+i); 
}

JSFIDDLE

这将处理用户输入的任何alpha数字字符,知道字母在数字之前。

var str = "SL452154-60";
var target = str.replace(str.match(/[a-zA-Z][^'d]/g),'');
var alpha = str.match(/[a-zA-Z][^'d]/g);
var fromTo = target.split('-');
var from = fromTo[0];
var to = fromTo[1];
var res = [];
for(var i=parseInt(from);
        i<= parseInt((from.substring(0,(from.length - to.length))) + fromTo[1]);
        i++)
{
res[res.length] = alpha + i;
}
alert(res)

<br>

:您可以尝试将字符串更改为,例如:"KG123125-60"

如果您知道该格式始终保持,在末尾有XX-XX的地方,那么您可以尝试使用正则表达式拆分以提取部分并构建范围。

首先创建一个helper来填充最小值和最大值范围:

var range = function(m, n) {
  var out = []
  for (var i=m; i<=n; i++) {
    out.push(i)
  }
  return out
}

然后拆分字符串以找出最小值和最大值的范围:

var str = 'SL452154-60'
var parts = str.split(/('d{2})-('d{2})$/)

然后使用帮助器创建范围:

var ran = range(+parts[1], +parts[2]) // `+` makes sure they're numbers

最后,您可以映射范围数组中的每个数字以生成字符串数组:

var result = ran.map(function(x){return parts[0]+x})
//^ ["SL452154", "SL452155", "SL452156", "SL452157",
//   "SL452158", "SL452159", "SL452160"]

function a() {

var str = 'SL45NU2154-60';
var str_arr = str.split("-");
var len =0;
var storage="";
for(var i=str.length; i>=0; i--)
{
var res = str_arr[0].substring(i-1,i );
    if(!isNaN(res))
    {
        storage=storage+res;
    }
    else
    {
    break;
    }
}
//after this you got 4512 the opposite order of 2154 now reverse it
alert(storage.length);
var storage2="";
for(var i=storage.length; i>=0; i--)
{
var res = storage.substring(i-1,i );

        storage2=storage2+res;
}
alert(storage2);
//after this long conversation you now retrieve the 2154 
var len2 = str_arr[1].length;
var num2= str_arr[1];
var storage3 = storage2.substring(len2,storage2.length);
while(storage3<=num2)
{
    var total =parseInt(storage3)+1;
    //now add this number to the inputed number
}`

}

希望对您有所帮助

try this

var string="SL45NU2154-60";
var string = string.split('-');
var len = string[1].length;
initial = string[0].substr(-len);
parseInt(initial);
var fixedString = string[0].slice(0, string[0].length - len);
var a= new Array();
for(var i=initial; i <= parseInt(string[1]);i++){
    a.push(fixedString+i);
}
console.log(a);
function getRange(str){
    var parms=str.split('-');
    var start=parms[0];
    var end=parms[1];
    var doStart = start.substr(start.length - end.length);
    var pre=start.match(/[a-zA-Z][^'d]/g);
    var post = start.replace(str.match(/[a-zA-Z][^'d]/g),'');
    var res=[];
    start=parseInt(doStart,10);
    for(i=start,j=0;i<=end;i++,j++){
        res[j]=pre+post;
        post+=i;
        }
    return res;
    }


console.log(getRange("SL452154-60"));