gpt4 book ai didi

php - 即使字符串分隔符为空,如何对字符串值进行 CamelCase?

转载 作者:可可西里 更新时间:2023-11-01 00:56:43 24 4
gpt4 key购买 nike

我需要将给定的字符串值(带或不带分隔符)转换为 CamelCase 字符串。到目前为止,这就是我正在做的:

class UtilString
{
public function stringToCamelCase($string, $character = null)
{
return preg_replace_callback("/{$character}[a-zA-Z]/", 'removeCharacterAndCapitalize', $string);
}

private function removeCharacterAndCapitalize($matches)
{
return strtoupper($matches[0][1]);
}
}

$str1 = 'string_with_separator';
$str2 = 'string';

$test1 = (new UtilString())->stringToCamelCase($str1, '_');
$test2 = (new UtilString())->stringToCamelCase($str2);

上面的代码输出是:

$test1 = 'string_with_separator'; 
$test2 = 'string';

我希望他们是:

$test1 = 'StringWithSeparator'; 
$test2 = 'String';

如何?我做错了什么以及如何解决?我正在使用 PHP 5.5.x!

注意:如果您知道任何具有此类功能的字符串操作类|包,请告诉我,这样我就不会重新发明轮子了!

最佳答案

使用

class UtilString
{
public function stringToCamelCase($string, $character = null)
{
$re = $character == null ? '/^([a-zA-Z])/' : '/(?:^|' . $character . ')([a-zA-Z])/';
return preg_replace_callback($re, array('UtilString', 'removeCharacterAndCapitalize'), $string);
}

private function removeCharacterAndCapitalize($matches)
{
return strtoupper($matches[1]);
}
}

参见 PHP demo

由于您需要考虑一个可选元素,因此您需要为这两种情况使用适当的模式。 $re = $character == null ? '/^([a-zA-Z])/' : '/(?:^|' . $character . ')([a-zA-Z])/'; 将指定第一个 /^([a-zA-Z])/ 正则表达式,以防未传递 $char。第二个将匹配 $char 和字符串的开头。两者都应该有捕获组,以便能够更改大小写并在 removeCharacterAndCapitalize 中返回正确的字符串。

至于在你的类中使用回调本身,你需要检查preg_replace_callback requires argument 2 to be a valid callback… Stuck! .它必须在 preg_replace_callback 中定义为 array('UtilString', 'removeCharacterAndCapitalize')

关于php - 即使字符串分隔符为空,如何对字符串值进行 CamelCase?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40344967/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com