2013-12-20 107 views
-1

我有一個可以包含標籤,例如:AS3字符串分割保持標籤

"<b>Water</b>=H<sub>2</sub>O" 

我要的是一個數組應該是一個變量字符串:

Array[0] <b>Water</b> 
Array[1] =H 
Array[2] <sub>2</sub> 
Array[3] O 

我怎麼能這樣做呢?

謝謝!

+1

http://php.net/dom –

+0

謝謝,但我不明白這可以如何幫助我與AS3。 – user3123207

+0

@ user3123207有一個叫做split()的函數。 – Cilan

回答

0

給它一個去,它使用一個普通的正則表達式來查找html標籤,以獲得它的分離,然後indexOf和substring將它組裝在一起。

function splitWithTags(str:String):Array { 

    var tags:Array = str.match(/(<(.|\n)*?>)/g); 
    var c:int = tags.length; 
    if(c%2 != 0) c--; // if it's odd, decrement to make even so loop works, last tag will be ignored. 

    if(c<2) return [str]; // not enough tags so return full string 

    var out:Array = []; 

    var end:int = 0; 
    var pos1:int, pos2:int; 

    for(var i:int = 0; i<c; i+=2) { 
     // find position of 2 tags. 
     pos1 = str.indexOf(tags[i]); 
     pos2 = str.indexOf(tags[i+1]); 

     if(pos1 >= end+1) { // there's some stuff not between tags to add 
      out.push(str.substring(end, pos1)); 
     } 

     end = pos2+tags[i+1].length 
     out.push(str.substring(pos1, end)); 
    } 

    if(end < str.length) { // there is substr at end 
     out.push(str.substring(end, str.length)); 
    } 

    return out; 
} 
+0

會試試這個,非常感謝。 – user3123207

+0

嘿@ user3123207這是怎麼回事?如果你可以將這個問題標記爲回答,如果它適合你,那將是一件好事。這是堆棧溢出的工作原理:http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work – adamh