我有一组字母数字字符串,每个字符串以非数字字符开头,以数字结尾,我希望能够将非数字部分与数字部分分开,假设每个字符串的字符数是常量,本来很容易,但我有像ABC123,ABCD456等字符串
答案 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,那就太过分了。