2016-02-04 61 views
-2

我想實現字符串替換功能,但是我能夠做到與字符替換(代碼如下)。對於字符串替換,我查找了微軟的參考資料來源,其中有以下評論。儘管我查找了stringbuilder代碼,但我無法理解它,並且我迷路了。感謝任何人都可以幫助我瞭解如何做到這一點的方向/想法。實現字符串替換功能

//此方法包含與StringBuilder Replace相同的功能。唯一的區別是, //一個新的String已被分配,因爲字符串是不可變

這是我有什麼焦炭replacment

public string StringReplaceUtil(string str, char find, char replace) 
{ 
    char[] ch = new char[str.Length]; 
    int j=0; 
    ch = str.ToCharArray(); 
    for (int i = 0; i < ch.Length; i++) 
    { 
     if (ch[i] == find) 
      ch[j] = replace; 
     else 
      ch[j] = ch[i]; 
     j++; 
    } 
    return new string(ch).Substring(0,j); 
} 
+1

爲什麼不使用與string.replace()方法?你可以用字符或整個字符串替換! ! ! – Younes

+0

爲什麼?投票? - 不管是誰,你能說出原因嗎?! – Kar

+0

我建議檢查關於META的討論,以獲得有關downvotes評論的SO立場 - http://meta.stackoverflow.com/questions/315431/allow-downvote-only-with-comment –

回答

2

我不知道你爲什麼不使用串.replace()函數。如果不實施任何新代碼,這將完全做到你正在嘗試做的事情。

string line = "This is a test string" 
string find = "a" 
string replace = "an awesome" 

console.write(line.replace(find, replace)) 

回報:

"This is an awesome test string" 
+0

當然,我知道有替換功能,我可以使用它。但是,這不是發佈這個問題的重點。正確閱讀標題。如果你仍然需要爲什麼我想這樣做 - 我正在準備面試,希望這有助於。 – Kar

2

在你的代碼中的錯誤是,你並不需要一個單獨的Ĵ指數,只是用我所有的時間。儘管正如其他人所指出的那樣 - 不要這樣做。

char[] ch = str.ToCharArray(); 
for (int i = 0; i < ch.Length; i++) 
{ 
    if (ch[i] == find) 
     ch[i] = replace; 
} 

你需要更復雜的代碼,如果你是一個字符串替換,而不是一個字符

+0

感謝您指出錯誤。是的,我知道這絕對是複雜的,但想知道解決這個問題的方法。從我得到的答覆中,我想,這不是要求實施內置功能或至少知道如何去做的地方。非常失望。 – Kar

+0

@卡爾你可以問這個問題,但要明確說明你是在做一個excercize。 IT並不清楚你知道已經有一個功能完全符合你的需求,人們只是說'爲什麼不使用exisitng函數' – pm100

+0

「爲了替換字符串,我查找了微軟的參考資料來源,它有以下評論。」 。並且,「//此方法包含與StringBuilder Replace相同的功能,唯一的區別是必須分配一個新的String,因爲字符串是不可變的。這些來自我的帖子。這很清楚,我知道有一個函數,並去參考源查看它的實現。如果沒有,我很抱歉。令我感到意外的是,第一個答案是否決了票數? – Kar