如何解析骆驼案例人类可读的字符串?

问题描述:

是否可以将骆驼大小写字符串解析为更具可读性的内容。如何解析骆驼案例人类可读的字符串?

例如:

  • LocalBusiness =本地商户
  • CivicStructureBuilding =文娱结构建筑
  • getUserMobilePhoneNumber =获取用户手机号码
  • bandGuitar1 =乐队吉他1

UPDATE

使用正则表达式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'); 

有在str_split的PHP手册,用户评论的一些例子。

Kevin

<?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>'; 
} 
+0

感谢,但它是可以分离的数字? – Nazariy 2011-06-06 15:17:23

+0

当然可以。编辑。 – simshaun 2011-06-06 15:34:18

+0

@dynamic ...有什么建议吗? – greaterKing 2015-01-04 05:08:15

使用正则表达式表达。在java中这样的事情

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

获取你最的方式而不是getUserMobilePhoneNumber =获取用户手机号码

+0

会在结果中使用'ucwords()'让你穿越终点线? – preinheimer 2011-06-06 15:19:03

+1

为什么这个答案是downvoted? 授予它不是一个完整的解决方案,但它是一个更聪明的方法的例子,也将支持其他字母。 ('p {Ll})(\ p {Lu})〜u','$ {1} $ {2}','someCamelCaseText'),MB_CASE_TITLE,“UTF-8”) ;' 适用于拉丁文,西里尔文,希腊文或任何其他字母表,它具有字母大小写的概念,与CamelCase方法兼容。 – Docal 2017-01-19 12:06:10