我从asps页面得到一个字符串,如下所示:
~/TestImages/media/9.jpg?width=443&height=388&ext=.jpg?id=92,
~/TestImages/media/8.jpg?width=506&height=337&ext=.jpg?id=91,
~/TestImages/media/jpeg-3.jpg?width=720&height=480&ext=.jpg?id=75,
~/TestImages/media/4.jpg?width=725&height=483&ext=.jpg?id=77,
~/TestImages/media/7.jpg?width=957&height=629&ext=.jpg?id=81,
~/TestImages/media/10.jpg?width=478&height=356&ext=.jpg?id=85,
每个都有一个换行符“\ r \ n”虽然..
想要创建一个只包含URL的数组(即“/TestImages/media/9.jpg”)。
尝试:
$.ajax({
url: url,
success: function(data){
var str = data.replace(/(\r\n|\n|\r)/gm,""),
imgArray = new Array,
tdata = str.split(",");
// make random order
for(var i=0; i < 13; i++){
var randomNumber = Math.floor(Math.random()*tdata.length);
imgArray.push(tdata.splice(randomNumber,1));
}
$.each(imgArray, function(i, item) {
var tmp = "";
tmp = item[0].match(/~(.*?)\.jpg/g, "$1");
item[0] = tmp;
});
}
});
没有太多运气改变数组中的值..任何人都有办法做到这一点?
答案 0 :(得分:1)
var arr = $.map(data.split(','), function(s) {
return s.trim().split('?').shift();
});
答案 1 :(得分:1)
这似乎完成了工作:
var s = "~/TestImages/media/9.jpg?width=443&height=388&ext=.jpg?id=92, \
~/TestImages/media/8.jpg?width=506&height=337&ext=.jpg?id=91, \
~/TestImages/media/jpeg-3.jpg?width=720&height=480&ext=.jpg?id=75, \
~/TestImages/media/4.jpg?width=725&height=483&ext=.jpg?id=77, \
~/TestImages/media/7.jpg?width=957&height=629&ext=.jpg?id=81, \
~/TestImages/media/10.jpg?width=478&height=356&ext=.jpg?id=85";
var sa = s.split(",");
for(var i=0; i < sa.length;i++) {
var first = sa[i].indexOf("/");
var last = sa[i].indexOf("?");
sa[i] = sa[i].substring(first, last);
}
console.log(sa);
您可以在此处使用此代码:http://jsbin.com/ePevaWos/1/edit?js,console
答案 2 :(得分:0)
$就({
url:url,
成功:函数(数据){
var str = data.replace(/ [\ r \ n])/ g,“”),//删除所有换行符
tdata = str.split(“,”),
imgArray = [];
$.each(tdata, function(i, item) {
var match = item.match(/~(.*?)\.jpg/)[1];
imgArray.push(match);
});
//shuffle now if desired
}
});
您也可以写下:
var imgArray = data.match(/~(.*?)\.jpg/g);
答案 3 :(得分:0)
查看jQuery.each
的{{3}}。
Javascript没有引用,因此,当您迭代它时,不能更改数组元素的值。
所以,你需要做的是创建另一个数组并在迭代时将值推入其中:
var dst = [];
$.each(imgArray, function(i, item) {
dst.push(item[0].match(/~(.*?)\.jpg/g, "$1")[1]);
});
答案 4 :(得分:-2)
为什么不使用字符串split
而不是正则表达式?
for (var i = 0;i < imgArray.length; i++) {
imgArray[i] = imgArray[i].split('?')[0];
}