如何删除字符串中的所有非大写字符?
How to remove all non-uppercase characters in a string?
是的,我基本上只是想将 Social Inc.
或 David Jason
之类的短语分解为 SI
和 DJ
。我试过使用 explode 但不知道如何分解所有 BUT
大写字母,我需要使用 preg_match()
吗?
您可以使用此正则表达式 (?![A-Z]).
和 preg_replace()
来替换除大写字符以外的所有字符。
preg_replace("/(?![A-Z])./", "", $yourvariable)
正则表达式将寻找任何东西 不是 大写字母(?!
否定前瞻)。
如果你想用其他案例测试它,我已经创建了一个 regex101。
EDIT 作为此线程的更新,您还可以使用方块内的 ^
字符来 reverse效果。
preg_replace("/([^A-Z])./", "", $yourvariable)
这将匹配所有非大写的字符,并用任何内容替换它们。
快速简便:
$ucaseletters = preg_replace('/[^A-Z]/', '', $input);
这将替换 A-Z 范围内所有非大写字母的内容。
解释:
^ within [] (Character-Set) is the negation-Operator (=anything that is NOT...)
我有一个更复杂的解决方案,但它也有效!
$s = str_split("Social Inc.");
foreach ($s as $idx => $char) {
if(preg_match("/[A-Z]/", $char))
{
echo $char;
}
}
它将echo
大写字母。
Nicholas 和 Bernhard 已经提供了成功的正则表达式模式,但它们没有达到应有的效率。
使用 /[^A-Z]+/
和带有 preg_replace() 的空替换字符串。
preg_replace('~[^A-Z]+~', '', $string)
否定字符class有一个或多个量词,因此匹配更长的子字符串并且需要更少的替换。
multibyte/unicode 等效项为:(Demo)
preg_replace('~[^\p{Lu}]+~u', '', 'Az+0ǻÉé') // outputs: AÉ
这也是与 preg_split 一起使用的最佳模式,但是 preg_split 生成一个数组,因此需要调用 implode 的额外步骤。
是的,我基本上只是想将 Social Inc.
或 David Jason
之类的短语分解为 SI
和 DJ
。我试过使用 explode 但不知道如何分解所有 BUT
大写字母,我需要使用 preg_match()
吗?
您可以使用此正则表达式 (?![A-Z]).
和 preg_replace()
来替换除大写字符以外的所有字符。
preg_replace("/(?![A-Z])./", "", $yourvariable)
正则表达式将寻找任何东西 不是 大写字母(?!
否定前瞻)。
如果你想用其他案例测试它,我已经创建了一个 regex101。
EDIT 作为此线程的更新,您还可以使用方块内的 ^
字符来 reverse效果。
preg_replace("/([^A-Z])./", "", $yourvariable)
这将匹配所有非大写的字符,并用任何内容替换它们。
快速简便:
$ucaseletters = preg_replace('/[^A-Z]/', '', $input);
这将替换 A-Z 范围内所有非大写字母的内容。
解释:
^ within [] (Character-Set) is the negation-Operator (=anything that is NOT...)
我有一个更复杂的解决方案,但它也有效!
$s = str_split("Social Inc.");
foreach ($s as $idx => $char) {
if(preg_match("/[A-Z]/", $char))
{
echo $char;
}
}
它将echo
大写字母。
Nicholas 和 Bernhard 已经提供了成功的正则表达式模式,但它们没有达到应有的效率。
使用 /[^A-Z]+/
和带有 preg_replace() 的空替换字符串。
preg_replace('~[^A-Z]+~', '', $string)
否定字符class有一个或多个量词,因此匹配更长的子字符串并且需要更少的替换。
multibyte/unicode 等效项为:(Demo)
preg_replace('~[^\p{Lu}]+~u', '', 'Az+0ǻÉé') // outputs: AÉ
这也是与 preg_split 一起使用的最佳模式,但是 preg_split 生成一个数组,因此需要调用 implode 的额外步骤。