我有这样的字符串
[Ljava.lang.String;
[Ldummy.class.Here;
[Lanother.unknown.Class;
我应使用什么正则表达式将[L
和;
替换为<span>
,[]</span>
并使它看起来像这样
<span>java.lang.String[]</span>
<span>dummy.class.Here[]</span>
<span>another.unknown.Class[]</span>
我想要的是使java数组类字符串表示更加人性化 我听说过1美元或类似的东西,但我找不到更多的信息,因为我不知道它是什么
答案 0 :(得分:1)
如果你想使用普通的旧PHP而不是正则表达式,这里有一个简单的代码片段可以完全满足你的需要 - 你可以修改它而不必排序对你没有意义的正则表达式:< / p>
<?php
$stringArray=array(
'[Ljava.lang.String;',
'[Ldummy.class.Here;',
'[Lanother.unknown.Class;'
);
foreach($stringArray as $val)
{
$output=$val;
if($val[0].$val[1]=='[L')
{
$output="<span>".substr($val,2);
}
if(substr($output,-1)==';')
{
$output=substr($output,0,strlen($output)-1).'</span>';
}
echo $output.'<br>';
}
?>
输出:
<span>java.lang.String</span>
<span>dummy.class.Here</span>
<span>another.unknown.Class</span>
答案 1 :(得分:1)
$strings = "[Ljava.lang.String;
[Ldummy.class.Here;
[Lanother.unknown.Class;";
$strings = preg_replace('/\[L([A-Za-z\.]+);/', '<span>$1[]</span>', $strings);
echo $strings;
输出:
$ php foo.php
<span>java.lang.String[]</span>
<span>dummy.class.Here[]</span>
<span>another.unknown.Class[]</span>
答案 2 :(得分:0)
这应该这样做:
$new_content = preg_replace('#^\[L(.*);\s*$#m', '<span>$1[]</span>', $content);
在这里演示:http://sandbox.onlinephpfunctions.com/code/8f0de08b5ba0882db2d98d99cdd961b9aebab074
答案 3 :(得分:0)
您可以使用:
$result = preg_replace('~\[L([^;]+);~', '<span>$1[]</span>', $txt);
其中[^;]+
匹配所有不是&#34;;&#34;