假设我有一个字符串
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>");
}
这最终会产生无限循环(因为我将字符串分配给自己)。
由于
答案 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++;
}