驼峰冲 - 两个首都彼此相邻(camelCase to dash - two capitals ne

2019-06-24 06:44发布

我使用这个功能,驼峰转换为字符串虚线:

function camel2dashed($className) {
    return strtolower(preg_replace('/([^A-Z-])([A-Z])/', '$1-$2', $className));
}

它有点工作,但是当我有恩那里有问题。 此字符串: getADog 。 它返回get-adog但我希望get-a-dog

我应该怎么更改我的代码? 谢谢

Answer 1:

使用前向断言 :

function camel2dashed($className) {
    return strtolower(preg_replace('/([a-zA-Z])(?=[A-Z])/', '$1-', $className));
}

看到它的在线工作: ideone



Answer 2:

你并不需要一个超前的断言来做到这一点,如果你知道你的字符串不以大写字母开头,你可以插入每一个大写字母像在此之前连字符:

function camel2dashed($className) {
    return strtolower(preg_replace('/([A-Z])/', '-$1', $className));
}

这仍然不会处理像@ sfjedi的“companyHQ”案件 - >“公司总部”。 对于你必须明确地测试不应该被允许分割资本子,或指定一些通用规则(例如不预置最后一个字符之前连字符)。

你可以找到答案,这样一些更复杂的选择虚拟复制的问题 。



文章来源: camelCase to dash - two capitals next to each other