作者dn42b5 (全世界的暱稱都被取光了)
看板C_Sharp
標題[問題] 修改文字檔txt
時間Fri Oct 4 11:34:30 2019
請教一下我有個txt檔
想一次修改大批資料的日期
內容如下
A001 3747 王大文 2303 20190924
A002 3747 王大明 39482 20190924
希望修改的方式為日期前面加‘123’並且改成
月日年
修改後
A001 3747 王大文 2303 12309242019
A002 5628 王大明 39482 12309242019
因為文字檔內的空格都有規定好
請問可以不改變文字檔的格式修改嗎
我現在只會讀全部的檔
String txtdata= system.io.file.readalltext( “txt.txt”);
請問如果要修改的話怎麼做
謝謝各位大大
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 49.219.141.41 (臺灣)
※ 文章網址: https://webptt.com/m.aspx?n=bbs/C_Sharp/M.1570160072.A.52F.html
1F:→ kuangyue: 感覺用excel就可以完成了? 10/04 11:36
2F:→ feobzq: 要先搞懂格式空格的規則吧 10/04 14:41
3F:→ dn42b5: 那請問如果知道空白的規則,要如何修改呢? 10/04 16:33
4F:→ kobe8112: 逐行讀檔→切割欄位→找到目標儲存格→修改值→存檔 10/04 17:06
6F:→ samchung: 剛剛又做了點修改,現在若 10/05 08:37
7F:→ samchung: 1.資料內容剛好出現8位數的數值(類似日期格式)不會轉換 10/05 08:37
8F:→ samchung: 2.最後一筆資料結尾不管有無斷行符號,都可被正確轉換 10/05 08:37
9F:→ dn42b5: 太感謝了我先來試試看 10/05 13:00
10F:→ dn42b5: 結果可以成功謝謝,那在請問一下,我剛剛在想如果我用一 10/05 14:39
11F:→ dn42b5: 個text box 輸入日期,是不是也可用這個方法把文字檔中的 10/05 14:39
12F:→ dn42b5: 日期替換成我想要的日期 10/05 14:39
13F:→ samchung: 可以,但要注意這會將所有資料都替換為同一個輸入字串 10/05 15:46
14F:→ samchung: 我更新在範例裡了,請參考執行結果 10/05 15:47
15F:→ dn42b5: @samchung 請問一下是如何排除資料中有相同的8位數值類似 10/05 17:51
16F:→ dn42b5: 日期,原理是什麼呢?剛剛試完都可以順利完成太厲害了 10/05 17:51
17F:→ samchung: 關鍵在正規表達式用來比對的 pattern 結尾部份 10/05 19:43
18F:→ samchung: (?'END'[\s]{0,1})$ 補充說明如下 10/05 19:44
19F:→ samchung: 因為有設定 RegexOptions.Multiline 10/05 19:44
20F:→ samchung: 所以在每一行比對時可用 ^ 表示行開頭,$ 表示行結尾 10/05 19:44
21F:→ samchung: () 表示將符合裡面所寫條件的字串群組化起來之後使用 10/05 19:44
22F:→ samchung: ?'END' 表示給這個群組命名為 END 之後可 ${END} 取用 10/05 19:44
23F:→ samchung: [\s] 表示要出現 \n \r \t \f 或空白任意 "一個" 10/05 19:44
24F:→ samchung: {0,1} 表示前面那個 [\s] 連續出現最少 0 個,最多 1 個 10/05 19:44
25F:→ samchung: 好啦,將上面整段放在 pattern 結尾表示 10/05 19:45
26F:→ samchung: 日期的8碼數字必須出現在每行的結尾才符合條件, 10/05 19:45
27F:→ samchung: 若是每行非結尾處的8碼數字就不符合條件 10/05 19:45
28F:→ dn42b5: @samchung 原來是這樣,謝謝大大的解說學習到了,獲益匪 10/05 20:18
29F:→ dn42b5: 淺! 10/05 20:18
30F:→ kobe8112: 正規表達法向來是神的領域,每次看都跟天書一樣QQ 10/05 22:01
31F:→ dn42b5: @samchung 請問一個衍生的問題~ 10/09 12:47
32F:→ dn42b5: 被取代的日期後可以往前移4個空格嗎? 10/09 12:47