每个人都知道如何大写字符串的第一个字母(ucfirst
)但是第2个或第N个字母呢?我正在寻找一种简单的方法来在ascii字符串的位置N处大写字符。
答案 0 :(得分:2)
我明白了:
$str[$n] = strtoupper($str[$n]);
请注意,该位置从零开始,因此对于字符串$n = 1
中的第二个字符。
答案 1 :(得分:1)
使用ascii字符串,您可以这样做:
$str[$n] = strtoupper($str[$n]);
但是这不适用于unicode字符串,只有当字符用一个字节编码时才有效。
对于多字节字符串(例如utf8):
mb_internal_encoding ('UTF-8');
$str = mb_substr($str, 0, $n) . mb_strtoupper(mb_substr($str, $n, 1)) . mb_substr($str, ++$n);
答案 2 :(得分:0)
这对我有用,例如麦当劳,麦金尼,麦考尔等。 另外,假设字符串中只有一个Mc实例。
$newname = "Joe and Mary Mcdonald";
$position = stripos($newname, "Mc"); // case insensitive
$newname[$position + 2] = strtoupper($newname[$position + 2]);
echo $newname;
答案 3 :(得分:-1)
$str = "teststring";
$pos = 5;
function toUpper($str, $pos) {
return substr_replace($str, strtoupper(substr($str, ($pos-1), 1)), ($pos-1), 1) ;
}
echo toUpper($str, $pos);
我想这就是你要找的东西。