Как разобрать случай Верблюда для удобочитаемой строки?
Возможно ли разобрать строку верблюжьей строки в нечто более читаемое.
например:
- LocalBusiness = Local Business
- CivicStructureBuilding = построение гражданской структуры.
- getUserMobilePhoneNumber = Получить номер мобильного телефона пользователя
- bandGuitar1 = Band Guitar 1
UPDATE
Использование примера simshaun regex Мне удалось выделить числа из текста с помощью этого правила:
function parseCamelCase($str)
{
return preg_replace('/(?!^)[A-Z]{2,}(?=[A-Z][a-z])|[A-Z][a-z]|[0-9]{1,}/', ' $0', $str);
}
//string(65) "customer ID With Some Other JET Words With Number 23rd Text After"
echo parseCamelCase('customerIDWithSomeOtherJETWordsWithNumber23rdTextAfter');
Ответы
Ответ 1
В комментариях пользователя str_split в руководстве PHP есть несколько примеров.
От Кевин:
<?php
$test = 'CustomerIDWithSomeOtherJETWords';
preg_replace('/(?!^)[A-Z]{2,}(?=[A-Z][a-z])|[A-Z][a-z]/', ' $0', $test);
И вот что я написал для удовлетворения ваших требований к должностям:
<?php
$tests = array(
'LocalBusiness' => 'Local Business',
'CivicStructureBuilding' => 'Civic Structure Building',
'getUserMobilePhoneNumber' => 'Get User Mobile Phone Number',
'bandGuitar1' => 'Band Guitar 1',
'band2Guitar123' => 'Band 2 Guitar 123',
);
foreach ($tests AS $input => $expected) {
$output = preg_replace(array('/(?<=[^A-Z])([A-Z])/', '/(?<=[^0-9])([0-9])/'), ' $0', $input);
$output = ucwords($output);
echo $output .' : '. ($output == $expected ? 'PASSED' : 'FAILED') .'<br>';
}
Ответ 2
Используйте выражение регулярного выражения. В java что-то вроде этого
String[] r = s.split("(?=\\p{Lu})");
Получает большую часть пути, но не для getUserMobilePhoneNumber = Получить номер мобильного телефона пользователя