在用户文字中我有一些明星,我正在尝试将它们转换为html
常规标签,例如,用户文字是:
对于每个循环迭代,当前**数组元素**的**值**分配给$ value,**数组指针**移动1,直到它到达最后一个数组元素。 / p>
如你所见,我在value
,array element
等明星之间有一些单词,现在我想将第一颗星转换为<b>
,将第二颗星转换为</b>
,最后我应该:
For every loop iteration, the <b> value </b> of the current <b> array
element </b> is assigned to $value and <b> the array pointer
<b> is moved by one, until it reaches the last array element.
这个我在php
上实现的代码工作正常,我试图在java上找到相同的代码
$re = '/\*\*(.*?)\*\*/';
$str = 'For every loop iteration, the ** value ** of the current ** array element ** is assigned to $value and ** the array pointer ** is moved by one, until it reaches the last array element.';
$subst = '<b>$1</b>';
$result = preg_replace($re, $subst, $str);
echo $result;
答案 0 :(得分:0)
我有一个解决方案。但它并不好。无论如何,我告诉你它。保持一个标志(例如:Bool boldTagStartFound = true)。找到给定字符串中**的出现的索引。它将是一个数组(请参阅链接https://shekhargulati.com/2010/05/04/finding-all-the-indexes-of-a-whole-word-in-a-given-string-using-java/)。迭代数组并使用索引将**替换为html标记。如果boldTagStartFound = true,则用大胆的起始html标记替换**并重置boldTagStartFound = false。如果boldTagStartFound = false,则将**替换为带有粗体结尾的html标记,并重置boldTagStartFound = true。