分隔字母数字字符串的非数字部分

时间:2015-11-01 14:36:41

标签: php string

我有一组字母数字字符串,每个字符串以非数字字符开头,以数字结尾,我希望能够将非数字部分与数字部分分开,假设每个字符串的字符数是常量,本来很容易,但我有像ABC123,ABCD456等字符串

1 个答案:

答案 0 :(得分:1)

我会这样做:

<?php
$strArray = array();
$strArray[] = '123ABC';
$strArray[] = 'ABC123';
$strArray[] = 'ABCD456';
$strArray[] = 'ABC4567';
$strArray[] = 'ABCD4567';

foreach ($strArray as $str){
    preg_match('/^([a-zA-Z]+)([0-9]+)$/', $str, $matches);
    if (count($matches)===3){
        $alphaPart = $matches[1];
        $numericPart = $matches[2];
        var_dump($alphaPart);
        var_dump($numericPart);
    }
    else{
        echo 'no match: ' . $str;
    }
}
?>

我更喜欢要寻找的更具体的模式定义。我怀疑preg_split是一种更糟糕的方法,性能明智。至少,我认为如果只有两个部分来分割字符串int0,那就太过分了。