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

时间:2014-07-24 06:20:10

标签: javascript jquery

我有一个像SL45NU2154-60

这样的字符串

现在我想要一个来自此字符串的数组,如

SL45NU2154
SL45NU2155
SL45NU2156
SL45NU2157
SL45NU2158
SL45NU2159
SL45NU2160

如何使用jquery或javascript执行此操作。

我尝试过的。 首先,我将此字符串与'-'分开,找到一个包含SL45NU215460的数组。现在我不知道如何通过循环或任何方式制作阵列。 这是我的代码

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

6 个答案:

答案 0 :(得分:2)

你的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); 
}

DEMO

答案 1 :(得分:1)

JSFIDDLE

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

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"

答案 2 :(得分:0)

如果您知道格式始终保留在最后XX-XX的位置,那么您可以尝试使用正则表达式进行拆分以提取部件并构建范围。

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

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"]

答案 3 :(得分:0)

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

}`

}

希望这个帮助

答案 4 :(得分:0)

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"));

答案 5 :(得分:0)

试试这个

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);
相关问题