如何用大写字母分隔单词?
How to separate words by uppercase letters?
我有这样的字符串:
SadnessSorrowSadnessSorrow
其中单词没有任何连接 space。每个单词都以大写字母开头。我想将这些单词和 select 前 2 个单词分开以放入一个新字符串中。
我需要在 php 应用程序中使用 preg_match
函数执行此操作。
我该怎么办?
我尝试使用 [A-Z]
,但不知何故我没有正确使用它。
发布问题后答案闪现:
preg_match_all('([A-Z][a-z]+)', 'SadnessSorrowSadnessSorrow', $matches);
它给出:
(
[0] => Sadness
[1] => Sorrow
[2] => Sadness
[3] => Sorrow
)
这里,我们也可以将我们的字符串按大写字母拆分,可能类似于:
$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
我有这样的字符串:
SadnessSorrowSadnessSorrow
其中单词没有任何连接 space。每个单词都以大写字母开头。我想将这些单词和 select 前 2 个单词分开以放入一个新字符串中。
我需要在 php 应用程序中使用 preg_match
函数执行此操作。
我该怎么办?
我尝试使用 [A-Z]
,但不知何故我没有正确使用它。
发布问题后答案闪现:
preg_match_all('([A-Z][a-z]+)', 'SadnessSorrowSadnessSorrow', $matches);
它给出:
(
[0] => Sadness
[1] => Sorrow
[2] => Sadness
[3] => Sorrow
)
这里,我们也可以将我们的字符串按大写字母拆分,可能类似于:
$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