我想查找一個字符串中的所有數字並向它們添加50個數字。在一個字符串中查找數字,並向其中添加50個
所以我有這樣的開始與:
'text' => string 'Word (9), WordSomething (5)' 'text' => string 'Word (15)'
結果:
'text' => string 'Word (59), WordSomething (55)' 'text' => string 'Word (65)'
我想查找一個字符串中的所有數字並向它們添加50個數字。在一個字符串中查找數字,並向其中添加50個
所以我有這樣的開始與:
'text' => string 'Word (9), WordSomething (5)' 'text' => string 'Word (15)'
結果:
'text' => string 'Word (59), WordSomething (55)' 'text' => string 'Word (65)'
您可以使用正則表達式此捕獲括號,然後之間的數字使用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);
似乎不可能爲50使用一個變量。我試過雙引號,即$ match [1] +「$ number」,這也不起作用。任何方式讓50成爲一個變量? – flux 2012-08-03 18:54:25
@flux [您可以添加'global $ number;返回....'那麼它的工作原理: - )](http://sk.php.net/manual/en/function.preg-replace-callback.php#90021) – Stano 2012-08-03 19:05:06
@flux - 我已經更新了我的答案使用閉包來允許'$ number'成爲一個變量。 – nickb 2012-08-03 19:15:05
編輯:如果你對正則表達式有一種非理性的恐懼,我認爲這應該工作。
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 = "";
}
}
有一些簡單的方法來分辨某個號碼開始或結束? (如括號) – Mitchell 2012-08-03 17:51:25