[問題] 關於txt 字串取代的問題

看板C_Sharp (C#)作者 (aluba123)時間13年前 (2012/01/10 04:18), 編輯推噓1(105)
留言6則, 3人參與, 最新討論串1/1
目前我再嘗試做txt 文件內容修改 由於某些古老系統,必須吃固定格式的txt檔案 所以當內文更動時,字串間空白不能少也不能多 目前我寫了一種方法,但總覺得不太保險,存在BUG 想問問看是否有更精確的方法可行 範例: txt中某行有一段字串為 task :A fun:m 現在要修改成 task : B fun:m 下面是我的方法 先將 txt 全部讀進 string [] temp中 然後 foreach (string line in temp) { int scount = line.indexof("task :"); int ecount = line.indexof("fun:m") if(count > 0) { line = line.replace(line.substring(scount+6,1),"B") } } 類似上面的方式,是能成功替換,但是卻會有bug 因為repleace會把整個字串有a 的都替換掉,會是個問題 麻煩各位了 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 123.110.252.159

01/10 08:57, , 1F
line = line.Remove(scount, 1);
01/10 08:57, 1F

01/10 08:58, , 2F
line = line.Insert(scount, "B");
01/10 08:58, 2F

01/10 08:59, , 3F
我想這樣應該就可以了吧 不過我想應該還有更快的做法
01/10 08:59, 3F
我有想過這個方法,但是Remove的第二個參數是動態的 因為更換的項目不一定,會不會沒算準而移除到空白處呢? ※ 編輯: aluba1203 來自: 123.110.252.159 (01/10 13:33)

01/10 21:53, , 4F
試試 regular expression
01/10 21:53, 4F

01/11 11:03, , 5F
其實我很好奇,為什麼不直接
01/11 11:03, 5F

01/11 11:03, , 6F
replace('task :A fun:m', 'task :B fun:m');
01/11 11:03, 6F
因為不能動到後面的,格事並不一定固定 ※ 編輯: aluba1203 來自: 123.110.252.159 (01/12 04:03)
文章代碼(AID): #1F2qkD_a (C_Sharp)
文章代碼(AID): #1F2qkD_a (C_Sharp)