16

キャメルケース文字列をより読みやすいものに解析することは可能ですか?

例えば:

  • LocalBusiness = ローカル ビジネス
  • CivicStructureBuild = 市民構造の建物
  • getUserMobilePhoneNumber = ユーザーの携帯電話番号を取得
  • bandGuitar1 = バンド ギター 1

アップデート

simshaun正規表現の例を使用して、このルールでテキストから数値を分離することができました:

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');
4

2 に答える 2

34

PHP マニュアルの str_split のユーザー コメントにいくつかの例があります。

ケビンより:

<?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>';
}
于 2011-06-06T15:13:39.410 に答える
0

正規表現を使用します。Javaでは、このようなもの

String[] r = s.split("(?=\\p{Lu})");

getUserMobilePhoneNumber = ユーザーの携帯電話番号を取得するためではなく、ほとんどの方法であなたを取得します

于 2011-06-06T15:15:01.640 に答える