11

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

我有一个字符串是驼峰式的。我想在每个大写字母处分解该字符串,如下所示。

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

我已经做到了这一点:

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

但是结果数组的开头总是以一个空值结束!$parts看起来像这样

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

如何摆脱数组开头的空值?

4

3 回答 3

22

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

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

请参阅preg_split的文档

于 2013-02-27T23:35:06.333 回答
3

你需要一个积极的向后看。试试这个:

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

array(2) {
  [0]=>
  string(5) "Camel"
  [1]=>
  string(4) "Case"
}
于 2013-02-27T23:39:13.803 回答
2

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

$parts = array_filter( $parts, 'strlen' );
于 2013-02-27T23:35:32.063 回答