我使用这个功能,驼峰转换为字符串虚线:驼峰冲 - 两个首都相邻
function camel2dashed($className) {
return strtolower(preg_replace('/([^A-Z-])([A-Z])/', '$1-$2', $className));
}
它有点工作,但是当我有恩那里有问题。这个字符串:getADog
。它返回get-adog
,但我想get-a-dog
我该如何更改我的代码?由于
我使用这个功能,驼峰转换为字符串虚线:驼峰冲 - 两个首都相邻
function camel2dashed($className) {
return strtolower(preg_replace('/([^A-Z-])([A-Z])/', '$1-$2', $className));
}
它有点工作,但是当我有恩那里有问题。这个字符串:getADog
。它返回get-adog
,但我想get-a-dog
我该如何更改我的代码?由于
function camel2dashed($className) {
return strtolower(preg_replace('/([a-zA-Z])(?=[A-Z])/', '$1-', $className));
}
看到它联机工作:ideone
你并不需要一个超前的断言来做到这一点,如果你知道你的字符串不上启动
function camel2dashed($className) {
return strtolower(preg_replace('/([A-Z])/', '-$1', $className));
}
这仍然不会处理这样@sfjedi情况: - 案例信,你可以每个大写字母像这样前插入一个连字符的“companyHQ” - >“company-hq”。为此,您必须明确地测试不允许拆分的允许大写的子字符串,或者指定一些通用规则(例如,不要在最后一个字符前加上连字符)。
你可以在这个virtual duplicate question的回答中找到一些更复杂的选择。
你有没有考虑过,如果你想让两个大写字母相邻?例如,公司总部的companyHQ?你不会想要company-h-q,对吧? – jedmao
在这种情况下,你是对的,但它不会发生。谢谢 – simPod
这不是camelCase。这是PascalCase btw。 –