Aus*_*yde 5 php regex text-processing
现在,我正在用分裂,切片和内爆实现这个:
$exploded = implode(' ',array_slice(preg_split('/(?=[A-Z])/','ThisIsATest'),1));
//$exploded = "This Is A Test"
Run Code Online (Sandbox Code Playgroud)
更漂亮的版本:
$capital_split = preg_split('/(?=[A-Z])/','ThisIsATest');
$blank_first_ignored = array_slice($capital_split,1);
$exploded = implode(' ',$blank_first_ignored);
Run Code Online (Sandbox Code Playgroud)
但是,问题是当你有输入时'SometimesPDFFilesHappen',我的实现将(错误地)解释为'Sometimes P D F Files Happen'.
我怎样(简单地)让我的脚本压缩'P D F'到'PDF'?
我应该分开的资格是从第一个首都开始,到最后一个结束,以适应下一个词.
是的,我知道存在一些含糊不清的内容,例如'ThisIsAPDFTest',会被解释为'This Is APDF Test'.但是,我无法想到一种"聪明"的方法来避免这种情况,因此这是一种可接受的妥协.
mvd*_*vds 10
$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;
Run Code Online (Sandbox Code Playgroud)
或者,如果你非常虔诚地发表声明:
preg_replace("/(([a-z])([A-Z])|([A-Z])([A-Z][a-z]))/","\\2\\4 \\3\\5",$input);
Run Code Online (Sandbox Code Playgroud)
这非常难看.