用<b>和</b>替换***包围的文本

时间:2013-07-10 10:15:53

标签: actionscript-3

假设我有一个字符串

var myString: String = "This ***is*** my ***string***"

现在我正在寻找一种用html-bold标签替换星星的方法。

替换后,代码应如下所示:

"This <b>is</b> my <b>string</b>

到目前为止我做了什么:

var boldPattern : RegExp = /\*\*\*.*?\*\*\*/; 

while(boldPattern.test(goalOv[gCnt][1])){
    myString = myString.replace(boldPattern, "<b>"+myString+"</b>");
}

这最终会产生无限循环(因为我将字符串分配给自己)。

由于

2 个答案:

答案 0 :(得分:2)

正如Gio所说,循环不是全球取代的最佳方式。您应该执行以下操作以避免循环,并在字符串上进行一次替换。

var boldPattern :String = "This ***is*** my ***string***";
var myString:RegExp = /\*\*\*([^*]*)\*\*\*/g;
var replText:String = "<b>$1</b>";

myString = myString.replace(boldPattern, replText);

另外,如果你想更正确地做到允许myString有1或2 *的字符串,你可以使用:

/\*\*\*(([^*]+\*{0,2})+)\*\*\*/g

答案 1 :(得分:1)

我不擅长正则表达式,但我认为这个简单的解决方案可以解决问题:

var boldPattern : RegExp = /(\*\*\*)/; 
var myString: String = "This ***is*** my ***string***";
var count:int = 0;
while(boldPattern.test(myString))
{
    if(count % 2 == 1)
        myString = myString.replace(boldPattern, "</b>");
    else
        myString = myString.replace(boldPattern, "<b>");
    count++;
}