【问题标题】:Split at capital letters in PHP?在PHP中以大写字母拆分?
【发布时间】:2013-02-27 23:32:35
【问题描述】:

我发现了这个类似的问题,但它没有回答我的问题,Split word by capital letter。

我有一个字符串 camel case。我想在每个大写字母处分解该字符串,如下所示。

$str = 'CamelCase'; // array('Camel', 'Case');

我已经走到这一步了:

$parts = preg_split('/(?=[A-Z])/', 'CamelCase');

但是结果数组的开头总是一个空值! $parts 是这样的

$parts = array('', 'Camel', 'Case');

如何去掉数组开头的空值?

【问题讨论】:

    标签: php preg-split


    【解决方案1】:

    您可以像这样使用 PREG_SPLIT_NO_EMPTY 标志:

    $parts = preg_split('/(?=[A-Z])/', 'CamelCase', -1, PREG_SPLIT_NO_EMPTY);
    

    请参阅documentation for preg_split。

    【讨论】:

      【解决方案2】:

      您需要积极地向后看。试试这个:

      $parts = preg_split('/(?<=\\w)(?=[A-Z])/', 'CamelCase')
      
      array(2) {
        [0]=>
        string(5) "Camel"
        [1]=>
        string(4) "Case"
      }
      

      【讨论】:

      • 似乎不适用于C CamelCase,如果有空格可能需要调整。
      • @Wesley,原来的要求中没有空格,但这会起作用: preg_split('/(?:(?
      【解决方案3】:

      数组过滤器可用于删除所有空值:

      $parts = array_filter( $parts, 'strlen' );
      

      【讨论】:

      • 他想生成正确的数组,而不是修复损坏的数组。
      • 鉴于 Kara 的回答,这不是最佳答案,但在我的辩护中,提问者特别问“我怎样才能在数组的开头摆脱空值?”
      猜你喜欢
      • 2012-04-21
      • 2023-03-20
      • 1970-01-01
      • 2017-01-28
      • 2015-01-06
      • 1970-01-01
      • 2019-08-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多