Incrementar o número inteiro no final da string

Eu tenho uma string, “Chicago-Illinos1” e eu quero adicionar uma para o final, então seria “Chicago-Illinos2”.

Nota: também poderia ser Chicago-Illinos10 e eu quero que ele vá para Chicago-Illinos11 para que eu não possa fazer substr.

Alguma solução sugerida?

Experimente isso

 preg_match("/(.*?)(\d+)$/","Chicago-Illinos1",$matches); $newstring = $matches[1].($matches[2]+1); 

(não pode tentar agora, mas deve funcionar)

Soluções complexas para um problema realmente simples …

 $str = 'Chicago-Illinos1'; echo $str++; //Chicago-Illinos2 

Se a string terminar com um número, ele aumentará o número (por exemplo: ‘abc123’ ++ = ‘abc124’).

Se a seqüência terminar com uma letra, a letra será incrementada (por exemplo: ‘123abc’ ++ = ‘123abd’)

 $string = 'Chicago-Illinois1'; preg_match('/^([^\d]+)([\d]*?)$/', $string, $match); $string = $match[1]; $number = $match[2] + 1; $string .= $number; 

Testado, funciona.

explodir também poderia fazer o trabalho

 < ?php $str="Chicago-Illinos1"; //our original string $temp=explode("Chicago-Illinos",$str); //making an array of it $str="Chicago-Illinos".($temp[1]+1); //the text and the number+1 ?> 

Eu usaria uma expressão regular para obter o número no final de uma string (para Java seria [0-9] + $ ), aumentá-la ( int number = Integer.parse (yourNumberAsString) + 1 ) e concatenar com Chicago-Illinos (o resto não corresponde à expressão regular usada para encontrar o número).

Você pode usar preg_match para realizar isso:

 $name = 'Chicago-Illinos10'; preg_match('/(.*?)(\d+)$/', $name, $match); $base = $match[1]; $num = $match[2]+1; print $base.$num; 

O resultado será:

 Chicago-Illinos11 

No entanto, se for possível, sugiro colocar outro caractere de delimitação entre o texto e o número. Por exemplo, se você colocou um tubo, você poderia simplesmente fazer uma explode e pegar a segunda parte da matriz. Seria muito mais simples.

 $name = 'Chicago-Illinos|1'; $parts = explode('|', $name); print $parts[0].($parts[1]+1); 

Se o comprimento da corda é uma preocupação (assim, o erro de Illinois), você pode mudar para as abreviaturas de estado. (ou seja, Chicago-IL|1 )

 $str = 'Chicago-Illinos1'; echo ++$str; 

http://php.net/manual/en/language.operators.increment.php