开发者

Increment integer at end of string

开发者 https://www.devze.com 2023-02-06 03:39 出处:网络
I have a string, \"Chicago-开发者_运维知识库Illinos1\" and I want to add one to the end of it, so it would be \"Chicago-Illinos2\".

I have a string, "Chicago-开发者_运维知识库Illinos1" and I want to add one to the end of it, so it would be "Chicago-Illinos2".

Note: it could also be Chicago-Illinos10 and I want it to go to Chicago-Illinos11 so I can't do substr.

Any suggested solutions?


Complex solutions for a really simple problem...

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

If the string ends with a number, it will increment the number (eg: 'abc123'++ = 'abc124').

If the string ends with a letter, the letter will be incremeted (eg: '123abc'++ = '123abd')


Try this

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

(can't try it now but it should work)


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

$string .= $number;

Tested, works.


explode could do the job aswell

<?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
?>


I would use a regular expression to get the number at the end of a string (for Java it would be [0-9]+$), increase it (int number = Integer.parse(yourNumberAsString) + 1), and concatenate with Chicago-Illinos (the rest not matched by the regular expression used for finding the number).


You can use preg_match to accomplish this:

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

The following will output:

Chicago-Illinos11

However, if it's possible, I'd suggest placing another delimiting character between the text and number. For example, if you placed a pipe, you could simply do an explode and grab the second part of the array. It would be much simpler.

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

If string length is a concern (thus the misspelling of Illinois), you could switch to the state abbreviations. (i.e. Chicago-IL|1)


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

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

0

精彩评论

暂无评论...
验证码 换一张
取 消