Увеличение целого числа в конце строки - PullRequest
3 голосов
/ 20 января 2011

У меня есть строка "Chicago-Illinos1", и я хочу добавить одну в конец, так что это будет "Chicago-Illinos2".

Примечание: это может быть также Chicago-Illinos10, и я хочу, чтобы он отправился в Chicago-Illinos11, поэтому я не могу выполнить субтр.

Какие-либо предлагаемые решения?

Ответы [ 7 ]

11 голосов
/ 15 ноября 2011

Комплексные решения для действительно простой задачи ...

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

Если строка заканчивается числом, она будет увеличивать число (например: 'abc123' ++ = 'abc124').

Если строка заканчивается буквой, буква будет увеличена (например: '123abc' ++ = '123abd')

8 голосов
/ 20 января 2011

Попробуйте это

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

(не могу попробовать сейчас, но оно должно работать)

2 голосов
/ 20 января 2011
$string = 'Chicago-Illinois1';
preg_match('/^([^\d]+)([\d]*?)$/', $string, $match);
$string = $match[1];
$number = $match[2] + 1;

$string .= $number;

Проверено, работает.

1 голос
/ 20 января 2011

взорваться может сделать работу так же хорошо

<?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
?>
0 голосов
/ 17 февраля 2017
$str = 'Chicago-Illinos1';
echo ++$str;

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

0 голосов
/ 20 января 2011

Вы можете использовать preg_match для выполнения этого:

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

Будет выведено следующее:

Chicago-Illinos11

Однако, если это возможно, я бы предложил разместить еще один символ-разделительмежду текстом и номером.Например, если вы разместили канал, вы могли бы просто сделать explode и захватить вторую часть массива.Это было бы намного проще.

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

Если длина строки имеет значение (например, неправильная орфография Иллинойса), вы можете переключиться на сокращение штата.(т.е. Chicago-IL|1)

0 голосов
/ 20 января 2011

Я бы использовал регулярное выражение, чтобы получить число в конце строки (для Java это будет [0-9] + $ ), увеличить его ( int number = Integer.parse (yourNumberAsString) + 1 ) и объединить его с Chicago-Illinos (остальное не соответствует регулярному выражению, используемому для нахождения числа).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...