1

之前:ThisIsExample 之后:This-Is-Example

可以用正则表达式吗?我尝试通过大写字母爆炸来做到这一点,但不可能通过大写字母来划分字符串。

4

2 回答 2

4

你可以这样做:

$result = preg_replace('~[a-z]\K(?=[A-Z])~', '-', $yourString);

\K重置之前匹配的所有内容,然后您可以使用此技巧匹配所有大写字母前面的小写字母。

(?=..)是一个前瞻,意味着后面跟着. 前瞻只是一个检查,但什么都不匹配。

于 2013-07-25T17:42:41.153 回答
2

是的,可以使用正则表达式。请参阅此 StackOverflow 答案: https
://stackoverflow.com/a/6227110 该答案提供了在大写字母前添加下划线的解决方案,因此要添加破折号(- 符号),这是正确的代码:

$result = preg_replace('/\B([A-Z])/', '-$1', $subject);

希望这可以帮助。

于 2013-07-25T17:50:46.343 回答