我想找到一个字符串中的所有数字并向它们添加50。
所以我从头开始:
'text' => string 'Word (9), WordSomething (5)' 'text' => string 'Word (15)'
结果:
'text' => string 'Word (59), WordSomething (55)' 'text' => string 'Word (65)'
答案 0 :(得分:9)
您可以使用正则表达式来捕获括号中的数字,然后使用preg_replace_callback()
应用您自己的自定义回调:
$result = preg_replace_callback( '/\((\d+)\)/', function( $match) {
return '(' . ($match[1] + 50) . ')';
}, $string);
所以,给定这个输入字符串:
Word (9), WordSomething (5)
输出will be:
Word (59), WordSomething (55)
对于变量输入,请使用闭包:
$number = 50;
$result = preg_replace_callback( '/\((\d+)\)/', function( $match) use( $number) {
return '(' . ($match[1] + $number) . ')';
}, $string);
答案 1 :(得分:1)
编辑:如果你对正则表达式有一种非理性的恐惧,我认为这应该有效。
Edit2:这是已完成且正常工作的java代码:http://pastebin.com/Z6uyDizz
我pseduo java代码:
var str = "Some3people6love20code102"
var newstr = ""
var tmp = ""
for (int i = 0; i<str.length; i++){
if((int)str[i] >= 48 && (int)str[i] <= 57){
tmp += str[i]
}else{
newstr+=((Integer.parseInt(tmp)+50)+"");
newstr+=str[i]
tmp = "";
}
}