En ce moment, je mets en œuvre cela avec une scission, tranche et implosion:Exploding UpperCasedCamelCase à Upper Cased CamelCase en PHP
$exploded = implode(' ',array_slice(preg_split('/(?=[A-Z])/','ThisIsATest'),1));
//$exploded = "This Is A Test"
Version Prettier:
$capital_split = preg_split('/(?=[A-Z])/','ThisIsATest');
$blank_first_ignored = array_slice($capital_split,1);
$exploded = implode(' ',$blank_first_ignored);
Cependant, le problème est lorsque vous avez entré comme 'SometimesPDFFilesHappen'
, que mon implémentation interpréterait (incorrectement) comme 'Sometimes P D F Files Happen'
.
Comment puis-je (simplement) faire condenser mon script 'P D F'
à 'PDF'
? Ma qualification pour quand il devrait diviser serait de commencer à la première capitale, et terminer une avant la dernière, pour accueillir le mot suivant. Oui, je sais qu'il y a des ambiguïtés, comme dans 'ThisIsAPDFTest'
, qui serait interprété comme 'This Is APDF Test'
. Cependant, je ne peux pas penser à un moyen "intelligent" pour éviter cela, c'est donc un compromis acceptable.
Voir aussi: http://stackoverflow.com/questions/3103730/-there-a-elegant-way-to-parse-a-word-and-add-spaces-before-capital-letters/3103795 # 3103795 –