现在,我正在通过分割、切片和内爆来实现这一点:
$exploded = implode(' ',array_slice(preg_split('/(?=[A-Z])/','ThisIsATest'),1));
//$exploded = "This Is A Test"
更漂亮的版本:
$capital_split = preg_split('/(?=[A-Z])/','ThisIsATest');
$blank_first_ignored = array_slice($capital_split,1);
$exploded = implode(' ',$blank_first_ignored);
然而,问题是当你输入类似'SometimesPDFFilesHappen'
,我的实现将(错误地)解释为'Sometimes P D F Files Happen'
.
我怎样才能(简单地)让我的脚本压缩'P D F'
to 'PDF'
?
我对何时拆分的资格是从第一个大写字母开始,并在最后一个大写字母之前结束,以容纳下一个单词。
是的,我知道有一些含糊之处,例如'ThisIsAPDFTest'
,这将被解释为'This Is APDF Test'
。但是,我想不出一种“聪明”的方法来避免这种情况,所以这是一个可以接受的妥协。
$input = "SomePDFFile";
$pass1 = preg_replace("/([a-z])([A-Z])/","\\1 \\2",$input);
$pass2 = preg_replace("/([A-Z])([A-Z][a-z])/","\\1 \\2",$pass1);
echo $pass2;
或者,如果您非常热衷于发表一项声明:
preg_replace("/(([a-z])([A-Z])|([A-Z])([A-Z][a-z]))/","\\2\\4 \\3\\5",$input);
这非常难看。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)