Mit folgender Funktion können Nummern hochgezählt werden, die aus Zahlen und Buchstaben bestehen können. Bei Buchstaben wird der nächste Buchstabe im Alphabet genommen, bei Zahlen die letzte Zahl der Nummer erhöht. Sollte keine Zahl oder Buchstabe am Ende der Nummer stehen, so bekommt die Nummer das Suffix „-1“.
abstract class DS { public static function getNextNumber($prevNumber) { $prevNumber = trim($prevNumber); if (strlen($prevNumber) <= 0) return "1"; preg_match('/\d+$/', $prevNumber, $mNumberic); preg_match('/[A-Za-z]+$/', $prevNumber, $mCharacter); if (isset($mNumberic[0]) && intal($mNumberic[0]) > 0) { return preg_replace('/\d+$/', intval($mNumberic[0]) + 1, $prevNumber); } else if (isset($mCharacter[0]) && strlen($mCharacter[0]) > 0) { return preg_replace('/[A-Za-z]+$/', ++ $mCharacter[0], $prevNumber); } else { return $prevNumber.'-1'; } } }
Ausgabe:
DS::getNextNumber("") => "1" DS::getNextNumber("1") => "2" DS::getNextNumber("100") => "101" DS::getNextNumber("ABC/2/CED-100") => "ABC/2/CED-101" DS::getNextNumber("ABC/2/CEE") => "ABC/2/CEF" DS::getNextNumber("B") => "C" DS::getNextNumber("Z") => "AA" DS::getNextNumber("12B") => "12C" DS::getNextNumber("12-B") => "12-C" DS::getNextNumber("12-B/") => "12-B/-1" DS::getNextNumber("A") => "ZZ"
Die gleiche Funktion für VisualBasic findet man hier.