我在javascript中有字符串。
var string = "BLAH BLAH BLAH width: 673px; height: 123px; BLAH BLAH BLAH width: 1009px; height: 237px; BLAH BLAH"
我希望有两个子串出来。一个从'width'
开始,以'px'
结尾,一个从'height'
开始,到'px'
结束。
每对'width'
和'height'
都会发生这种情况。这可能会在我的字符串中出现n次。每次都有不同的宽度和高度数字。
我真的不知道如何解决这个问题,因为字符串的长度是动态的。我不能只在某个索引处开始substring
或substr
并转到某个索引。我看不出如何使用split
和join
。无论如何使用jQuery或javascript做到这一点。
我目前的方式很慢......
for (var w = 1; w <= 10000; w++) {
for(var h = 1; h<=10000; h++)
{
var match = text.match("style=\"width: " + w + "px; height: " + h + "px;");
if (match != null) {
text = text.split("style=\"width: " + w + "px; height: " + h + "px;").join('');
}
}
}
找到子字符串后,我希望将它们从字符串中删除。
答案 0 :(得分:2)
编辑完成后,您可以根据自己的要求执行此操作:
var string = "BLAH BLAH BLAH width: 673px; height: 123px; BLAH BLAH BLAH width: 1009px; height: 237px; BLAH BLAH";
var regExp = /(\b\w+:[^:]*px)/g
string = string.replace(regExp,'')
使用正则表达式,你可以这样做:
var string = "BLAH BLAH BLAH width: 673px; height: 123px; BLAH BLAH BLAH width: 1009px; height: 237px; BLAH BLAH";
var regExp = /(\b\w+:[^:]*px)/g
var match = regExp.exec(string);
while(match != null)
{
var width = match[1]
match = regExp.exec(string);
var height = match[1]
match = regExp.exec(string);
}
在此之后,在每次迭代中,变量width
将具有子串width: 4874px
,变量height
将具有子串height: 898px
答案 1 :(得分:2)
在另外两个字符串之间提取字符串的一种优雅方法是向String对象添加一个函数。
/**
* Extract a string between a Prefix and a Suffix
*
* @param prefix {string} Prefix string
* @param suffix {string} Suffix string
* @param trimSpace {boolean} (optional default false) is string space trimmed
* @returns {string} String between prefix and suffix
*/
String.prototype.between = function(prefix, suffix, trimSpace) {
trimSpace = typeof trimSpace !== 'undefined' ? trimSpace : false;
var thisString = this;
var index = thisString.indexOf(prefix);
if (index >= 0) {
thisString = thisString.substring(index + prefix.length);
} else {
return "";
}
if (suffix) {
index = thisString.indexOf(suffix);
if (index < 0) {
return "";
} else {
thisString = thisString.substring(0, index);
}
}
return trimSpace ? thisString.trim() : thisString;
}
var theString = "*Other text that is dynamic in length* width: 4874px; height: 898px *more dynamic length text*"
var width = theString.between("width:", "px");
var widthTrimmed = theString.between("width:", "px", true);
var heightTrimmed = theString.between("height:", "px", true);
document.write("Not trimmed width: width=>" + width + "<" + "<br/>");
document.write("Trimmed width: widthTrimmed=>" + widthTrimmed + "<" + "<br/>");
document.write("Trimmed height: heightTrimmed=>" + heightTrimmed + "<" + "<br/>");
<body></body>
答案 2 :(得分:1)
假设格式保持不变,获得宽度/高度索引,px应该足够
comN
&#13;