Javascript 在动态字符串中,如何在某个字符处开始子字符串并在某个字符处结束它?

Javascript 在动态字符串中,如何在某个字符处开始子字符串并在某个字符处结束它?,javascript,jquery,regex,string,Javascript,Jquery,Regex,String,我有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次。每次使用不同的宽度和高度数字 我真的不知道该

我有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次。每次使用不同的宽度和高度数字

我真的不知道该怎么做,因为字符串的长度是动态的。我不能只在某个索引处启动
子字符串
子字符串
,然后转到某个索引。我不知道如何使用
split
join
。使用jQuery或javascript是否可以实现这一点

var string = "BLAH BLAH BLAH width: 673px; height: 123px; BLAH BLAH BLAH width: 1009px; height: 237px; BLAH BLAH"
我现在的路很慢

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('');
            }
        }
    }

for(var w=1;w假设格式保持不变,获取宽度/高度索引和px就足够了

var string=“*其他长度动态的文本*宽度:4874px;高度:898px;*更动态的长度文本*”;
var windexStart=string.indexOf('width')+6;
var windexStop=string.indexOf('px;');
var hindexStart=string.indexOf('height')+7;
var hindexStop=string.lastIndexOf('px;');
var width=string.substring(windexStart、windexStop);
var height=string.substring(hindexStart、hindexStop);

警报(宽度+“”+高度);
假设格式保持不变,获取宽度/高度索引和px就足够了

var string=“*其他长度动态的文本*宽度:4874px;高度:898px;*更动态的长度文本*”;
var windexStart=string.indexOf('width')+6;
var windexStop=string.indexOf('px;');
var hindexStart=string.indexOf('height')+7;
var hindexStop=string.lastIndexOf('px;');
var width=string.substring(windexStart、windexStop);
var height=string.substring(hindexStart、hindexStop);

警告(宽度+“”+高度);
编辑后,您只需根据需要执行以下操作:

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,'')
使用regex,您可以执行以下操作:

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

,编辑后,您只需根据需要执行以下操作:

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,'')
使用regex,您可以执行以下操作:

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

在其他两个字符串之间提取字符串的优雅方法是向string对象添加函数

/**
*提取前缀和后缀之间的字符串
*
*@param prefix{string}前缀字符串
*@param后缀{string}后缀字符串
*@param trimSpace{boolean}(可选默认值false)是字符串空间修剪
*@返回前缀和后缀之间的{string}字符串
*/
String.prototype.between=函数(前缀、后缀、trimSpace){
trimSpace=trimSpace的类型!==“未定义”?trimSpace:false;
var thistring=这个;
var index=thisString.indexOf(前缀);
如果(索引>=0){
thisString=thisString.substring(索引+前缀.length);
}否则{
返回“”;
}
if(后缀){
index=thisString.indexOf(后缀);
如果(指数<0){
返回“”;
}否则{
thisString=thisString.substring(0,索引);
}
}
返回trimSpace?thisString.trim():thisString;
}
var theString=“*其他长度动态的文本*宽度:4874px;高度:898px*更多动态长度文本*”
var width=字符串之间(“宽度:”,“px”);
var widthTrimmed=字符串之间(“宽度:”,“px”,真);
var heightTrimmed=字符串之间(“高度:”,“px”,真);

write(“未修剪宽度:宽度=>”+width+“”+widthmedim+“”+heightTrimmed+”在其他两个字符串之间提取字符串的优雅方法是向字符串对象添加函数

/**
*提取前缀和后缀之间的字符串
*
*@param prefix{string}前缀字符串
*@param后缀{string}后缀字符串
*@param trimSpace{boolean}(可选默认值false)是字符串空间修剪
*@返回前缀和后缀之间的{string}字符串
*/
String.prototype.between=函数(前缀、后缀、trimSpace){
trimSpace=trimSpace的类型!==“未定义”?trimSpace:false;
var thistring=这个;
var index=thisString.indexOf(前缀);
如果(索引>=0){
thisString=thisString.substring(索引+前缀.length);
}否则{
返回“”;
}
if(后缀){
index=thisString.indexOf(后缀);
如果(指数<0){
返回“”;
}否则{
thisString=thisString.substring(0,索引);
}
}
返回trimSpace?thisString.trim():thisString;
}
var theString=“*其他长度动态的文本*宽度:4874px;高度:898px*更多动态长度文本*”
var width=字符串之间(“宽度:”,“px”);
var widthTrimmed=字符串之间(“宽度:”,“px”,真);
var heightTrimmed=字符串之间(“高度:”,“px”,真);

document.write(“未修剪宽度:宽度=>”+width+“”+widthmedim+“”+heightTrimmed+”我看到你已经标记了问题
regex
,所以你熟悉这个术语-我想你没有试过写一个?-它们适合这个场景。另外(在字里行间阅读),看起来您正在解析一个HTML样式的属性-此文本是否来自live DOM树中的元素,因为获取这些值的更干净的方法将使用该方法。我尝试了正则表达式,我不知道是否有一种方法可以将文本加上数字的\d+表达式组合起来。@GlobalJim,您能给出一个e吗