在字符串结尾处递增整数

时间:2011-01-19 21:08:21

标签: php string

我有一个字符串,“Chicago-Illinos1”,我想在它的末尾添加一个,所以它将是“Chicago-Illinos2”。

注意:它也可能是Chicago-Illinos10,我希望它去Chicago-Illinos11所以我不能做substr。

任何建议的解决方案?

7 个答案:

答案 0 :(得分:11)

解决一个非常简单问题的复杂解决方案......

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

如果字符串以数字结尾,则会增加数字(例如:'abc123'++ ='abc124')。

如果字符串以字母结尾,则字母将被递增(例如:'123abc'++ ='123abd')

答案 1 :(得分:8)

试试这个

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

(现在不能尝试,但应该有效)

答案 2 :(得分:2)

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

$string .= $number;

经过测试,有效。

答案 3 :(得分:1)

爆炸可以完成这项工作

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

答案 4 :(得分:0)

我会使用正则表达式来获取字符串末尾的数字(对于Java,它将是 [0-9] + $ ),增加它( int number = Integer.parse(yourNumberAsString)+ 1 ),并与Chicago-Illinos连接(其余部分与用于查找数字的正则表达式不匹配)。

答案 5 :(得分:0)

您可以使用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

答案 6 :(得分:0)

SELECT
    wp_terms.name AS 'Exam',   
    (
     SELECT wp_postmeta.meta_value
     FROM wp_postmeta
     WHERE wp_postmeta.meta_key in ('_order_total')  and rownum=1
    ),  
    wp.id,  
    wp_woocommerce_order_itemmeta.meta_value AS 'Product Id',  
    f.order_item_name,
    (
     SELECT wp_postmeta.meta_value
     FROM wp_postmeta
     WHERE wp_postmeta.meta_key in ('_billing_email') and rownum=1
    )  
FROM
    wp_term_taxonomy
....

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