Android上的Android等效preg_replace

时间:2017-09-21 06:47:27

标签: java android

在用户文字中我有一些明星,我正在尝试将它们转换为html常规标签,例如,用户文字是:

  

对于每个循环迭代,当前**数组元素**的**值**分配给$ value,**数组指针**移动1,直到它到达最后一个数组元素。 / p>

如你所见,我在valuearray 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;

1 个答案:

答案 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。