2012-05-24 152 views
-3

我想替換一些字符與他人之前我已經問過這樣的問題,他們建議使用功能替換,但是當我使用替換它落在特定條件下,當我嘗試替換另一個字符燒焦它刪除另一個字符,這也是一個字符串,我不希望remove.here如果我的字符串爲「A1010」根據我的代碼,最後一個字符串應該是我更多的澄清替換和修改一個字符串

for (int i = 0; i < words.Length; i++) 
{ 
    for (int j = 1; j < words[i].Length; j++) 
    { 
     if (j + 2 == words[i].Length) 
      break; 

     if (words[i][j] == words[i][j + 2] && words[i][j + 1] == '0') 
     { 
      words[i] = words[i].Replace(words[i][j + 1].ToString(), string.Empty); 
     } 
    } 
} 

代碼a110但輸出是a11,我不知道爲什麼它消除了最後的0 ??

+1

什麼是關鍵詞?如果我認爲WORDS是字符串「a1010」,則此代碼不會編譯。 – Tigran

+3

這會傷害我的眼睛 –

+1

當我甚至無法理解目的或應用程序時,我發現很難回答...... –

回答

1
words[i] = words[i].Replace(words[i][j + 1].ToString(), string.Empty); 

基本上解析...

words[i] = words[i].Replace("0", ""); 

(至少在特定的迭代你所描述)

它與空字符串替換所有0在您的字符串。如果你知道你要刪除你可以做這個字符的精確索引...

words[i].Remove(j + 1, 1); 
1

此行

words[i] = words[i].Replace(words[i][j + 1].ToString(), string.Empty); 

與emtpty串詞ij+1的位置則取代字符的所有實例。在你的例子中,這意味着全部0 s被刪除。

4

.Replace將用指定要替換的字符替換給定字符的所有匹配項。這就是爲什麼兩個事件都被刪除了。

由於您正在查找要替換的字母,請嘗試使用Remove代替,然後突破循環,因此您也不會刪除第二個字母。

+0

替換將只替換第一個匹配項,除非你用正則表達式指定/ g –

+0

叔叔Iroh - 他指的是'String.Replace',而不是正則表達式替換。 – CAbbott

0

您可以替換使用這個第一次出現:

public static string Replace(string Word, string oldChar, string newChar) 
{ 
    for (int i = 0; i < Word.Length; i++) 
    { 
     string aux = "" + Word[i]; 
     if (aux.Equals(oldChar)) 
     { 
      Word = Word.Remove(i, 1); 
      Word = Word.Insert(i, newChar); 

      return Word; 
     } 
    } 
    return Word; 
}