我有一个字符串,“Chicago-Illinos1”,我想在它的末尾添加一个,所以它将是“Chicago-Illinos2”。
注意:它也可能是Chicago-Illinos10,我希望它去Chicago-Illinos11所以我不能做substr。
任何建议的解决方案?
答案 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
....