0

我想找到一个字符串中的所有数字并将它们加 50。

所以我有这个开始:

'text' => string 'Word (9), WordSomething (5)'
'text' => string 'Word (15)'

结果:

'text' => string 'Word (59), WordSomething (55)'
'text' => string 'Word (65)'
4

2 回答 2

9

您可以为此使用正则表达式来捕获括号之间的数字,然后使用以下方法应用您自己的自定义回调preg_replace_callback()

$result = preg_replace_callback( '/\((\d+)\)/', function( $match) {
    return '(' . ($match[1] + 50) . ')';
}, $string);

所以,给定这个输入字符串:

Word (9), WordSomething (5)

输出将是

Word (59), WordSomething (55)

对于变量输入,使用闭包:

$number = 50;
$result = preg_replace_callback( '/\((\d+)\)/', function( $match) use( $number) {
    return '(' . ($match[1] + $number) . ')';
}, $string);
于 2012-08-03T17:51:46.913 回答
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 = "";
    }
}
于 2012-08-03T17:56:07.960 回答