Как разделить слова заглавными буквами? - PullRequest
2 голосов
/ 25 мая 2019

У меня есть строка как:

SadnessSorrowSadnessSorrow

, где слова объединяются без пробелов. Каждое слово начинается с заглавной буквы. Я хочу отделить эти слова и выбрать первые 2 слова, чтобы вставить новую строку.

Мне нужно сделать это в приложении php, используя функцию preg_match.

Как мне это сделать?

Я пытался использовать [A-Z], но почему-то я не правильно понял.

Ответы [ 2 ]

3 голосов
/ 25 мая 2019

Здесь мы также можем разделить нашу строку заглавными буквами, возможно, похожими на:

$str = "SadnessSorrowSadnessSorrow";

$str_array = preg_split('/\B(?=[A-Z])/s', $str);

foreach ($str_array as $value) {
    echo $value . "\n";
}

Исходя из рекомендаций bobble bubble , гораздо лучше использовать \B(?=[A-Z]) вместо (?=[A-Z]), или мы можем использовать PREG_SPLIT_NO_EMPTY.

Выход

Sadness
Sorrow
Sadness
Sorrow
2 голосов
/ 25 мая 2019

Ответ вспыхнул, когда я отправил вопрос:

preg_match_all('([A-Z][a-z]+)', 'SadnessSorrowSadnessSorrow', $matches);

Это дает:

(
[0] => Sadness
[1] => Sorrow
[2] => Sadness
[3] => Sorrow
)
...