2013-10-28 71 views
0

我想以簡單高效的方式(即快速和更少的內存)替換字符串生成器末尾的第二個字符。字符串將大約200-300 MB我猜(不知道)。我該怎麼做 ?如果輸入字符串的末尾有換行符,答案會改變嗎?在C中使用stringbuilder處理巨大的字符串#

謝謝。

+4

這個字符串從哪裏來?如果它來自一個文件..我會建議你尋找到最後,並通過寫在頂部替換字符。這可以節省一個300MB的字符串在內存中.. –

回答

3

可以使用StringBuilder.CharsStringBuilder覆蓋一個特定的字符:

// For example, replace 'x' into the 2nd to last char 
stringBuilder[stringBuilder.Length-2] = 'x'; 
3

StringBuilder使用字符作爲它的後備存儲的陣列。一個簡單的

StringBuilder sb = new StringBuilder() ; 
sb.Append(GetSomeEnormousString()) ; 

sb[ sb.Length - 2 ] = '*' ; 

應該做你。

除了涉及的任何分頁之外,它都是直接內存訪問。