假设我有以下字符串:
getPasswordLastChangedDatetime
我怎么能用大写字母拆分它以便我能够得到:
get
Password
Last
Changed
Datetime
答案 0 :(得分:6)
如果你只关心ASCII字符:
$parts = preg_split("/(?=[A-Z])/", $str);
(?= ..)
构造称为lookahead [docs]。
如果部件在开头只包含大写字符,则此方法有效。如果你有像getHTMLString
这样的东西会变得更复杂。这可以匹配:
$parts = preg_split("/((?<=[a-z])(?=[A-Z])|(?=[A-Z][a-z]))/", $str);
答案 1 :(得分:1)
过早地问这个问题,发现了这个:
preg_replace('/(?!^)[[:upper:]]/',' \0',$test);
答案 2 :(得分:1)
例如:
(?:^|\p{Lu})\P{Lu}*
答案 3 :(得分:0)
无需过度复杂的解决方案。这样做
preg_replace('/([A-Z])/',"\n".'$1',$string);
这当然不会照顾缩略语
答案 4 :(得分:0)
preg_split('@(?=[A-Z])@', 'asAs')
答案 5 :(得分:0)
使用此:[a-z]+|[A-Z][a-z]*
或\p{Ll}+|\p{Lu}\p{Ll}*
答案 6 :(得分:0)
preg_split("/(?<=[a-z])(?=[A-Z])/",$password));