2011-09-08 80 views

回答

1

如何:

$str = "Hey hello world!"; 
for($i=3; $i<strlen($str); $i+=4) { 
    if ($str[$i] != 'J') 
     $str = substr_replace($str, 'J', $i, 0); 
} 
echo $str,"\n"; 

輸出:

HeyJ heJlloJ woJrldJ! 
+0

opss ..沒關係..只是最後一步是檢查是否存在「J」遞歸,如果存在應該不加:P .. thx! – sbaaaang

+0

@Ispuk:我編輯了我的答案。 – Toto

1

你可以這樣來做:

if(substr($asd, 3, 1) !== 'J') 
{ 
    $asd = substr($asd, 0, 3)."J".substr($asd, 3); 

} 

除非你知道一個事實,該字符串$ ASD超過三個字符,你還應該檢查長以前的字符串的長度爲:

if(strlen($asd) > 3 && substr($asd, 3, 1) !== 'J') 
{ 
    $asd = substr($asd, 0, 3)."J".substr($asd, 3); 
} 

最後,上述方法對單個字符cters以及多個字符序列,但如果你只關心一個字符,你可以只使用字符串索引來檢查字符是存在的,就像這樣:如果你需要就去做每3個charachters

if(strlen($asd) > 3 && $asd[3] !== 'J') 
{ 
    $asd = substr($asd, 0, 3)."J".substr($asd, 3); 
} 

把它放在一個循環:

$pos = 0; 
while(true) 
{ 
    // go to the position of the next character of interest 
    $pos += 3; 

    // if the next pos is past the end of the string break out of the loop 
    if(strlen($asd) <= $pos) 
     break; 

    if($asd[$pos] !== 'J') 
    { 
     $asd = substr($asd, 0, $pos)."J".substr($asd, $pos); 
     $pos++; 
    } 
} 

注意

如果您正在編輯這樣的字符串是大,並且需要修改出現的次數也是相當大的,你可以優化algorit HM,使得其首先找到其中字符需要要插入的位置,然後分割原始字符串分成子字符串數組,然後使用控制字符作爲使用木匠連接它們全部一起array_join

+0

所以這段代碼是完美的!但我要編輯我的問題,因爲我寫了那麼糟糕:/ ...對不起這個..無論如何,正確的邏輯將追加如果不存在於x位置遞歸...:P – sbaaaang

+1

這是不遞歸。只是做一個循環.. –

相關問題