从子串中查找特定字符

时间:2013-08-27 09:40:59

标签: string flex flash-builder4.5

我有这个函数第一次找到字符串:

var strng:String = new String(txtSource.text)
var position:Number = new Number();
position = strng.indexOf("<img pg",0);          
strng = strng.substring(position + 4);
position = strng.indexOf(">");
strng = strng.substring(0, position);
textcontrol1.text = String(strng);

现在我得到以下字符串作为答案

<img pg="asStoryVid" class="" vspace="0" marginheight="0" marginwidth="0" width="300" border="0" src="http://www.abc.com/thumb/msid-22087805,width-300,resizemode-4/xyz.jpg" 
alt="" title="" ag="">

现在,我想从上面的字符串中只想要src =“http://www.abc.com/thumb/msid-22087805,width-300,resizemode-4/xyz.jpg”。为此我写了这个函数

var strng1:String = new String(textcontrol1.text)
var position1:Number = new Number();
position1 = strng1.indexOf('src="http://',0);                   
strng1 = strng1.substring(position1 + 0);
position1 = strng1.indexOf('"');
strng1 = strng1.substring(0, position1);
textcontrol1.text = String(strng1);

但在输出中我得到一个没有字符串 任何人都可以告诉我哪里错了?

2 个答案:

答案 0 :(得分:0)

试试这段代码。

var strng1:String = new String(textcontrol1.text);
var position1:Number = new Number();
position1 = strng1.indexOf('src="http://',0);
strng1 = strng1.substring(position1 + 0);
// search 2nd " character
position1 = strng1.indexOf('"', strng1.indexOf('"') + 1);

strng1 = strng1.substring(0, position1 + 1);

textcontrol1.text = String(strng1);

答案 1 :(得分:0)

不不不 - 只是use a regex

var str:String = '<img pg="asStoryVid" class="" vspace="0" marginheight="0" marginwidth="0" width="300" border="0" src="http://www.abc.com/thumb/msid-22087805,width-300,resizemode-4/xyz.jpg" alt="" title="" ag="">';
//var str:String = new String(textcontrol1.text);
var pattern:RegExp = /<img [^>]*src="([^"]+)"/i; 
var result:Object = pattern.exec(str);

if (result) {
    //textcontrol1.text = result[1];
    trace(result[1]);
}

[^>]*表示:零个或多个字符,但不是右括号>

[^"]+表示:一个或多个字符,但不是引用

圆括号将其捕捉到result[1]

作为一般建议:保持你的正则表达式简单,不要把东西放到你不需要捕获的东西中(即不要将class=width=添加到你的正则表达式中。