1

假设我有一个字符串

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>");
}

这以一个无限循环结束(因为我将字符串分配给它自己)。

谢谢

4

2 回答 2

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
于 2013-07-10T17:06:23.767 回答
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++;
}
于 2013-07-10T10:35:06.710 回答