[问题] 修改文字档txt

楼主: dn42b5 (全世界的暱称都被取光了)   2019-10-04 11:34:30
请教一下我有个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”);
请问如果要修改的话怎么做
谢谢各位大大
作者: kuangyue (YUN)   2019-10-04 11:36:00
感觉用excel就可以完成了?
作者: feobzq (0.0)   2019-10-04 14:41:00
要先搞懂格式空格的规则吧
楼主: dn42b5 (全世界的暱称都被取光了)   2019-10-04 16:33:00
那请问如果知道空白的规则,要如何修改呢?
作者: kobe8112 (小B)   2019-10-04 17:06:00
逐行读档→切割字段→找到目标储存格→修改值→存盘
作者: samchung (不是咖啡店小开XD)   2019-10-04 22:44:00
这是你要的吗? https://dotnetfiddle.net/zJqXa9刚刚又做了点修改,现在若1.资料内容刚好出现8位数的数值(类似日期格式)不会转换2.最后一笔资料结尾不管有无断行符号,都可被正确转换
楼主: dn42b5 (全世界的暱称都被取光了)   2019-10-05 13:00:00
太感谢了我先来试试看结果可以成功谢谢,那在请问一下,我刚刚在想如果我用一个text box 输入日期,是不是也可用这个方法把文字档中的日期替换成我想要的日期
作者: samchung (不是咖啡店小开XD)   2019-10-05 15:46:00
可以,但要注意这会将所有资料都替换为同一个输入字串我更新在范例里了,请参考执行结果
楼主: dn42b5 (全世界的暱称都被取光了)   2019-10-05 17:51:00
@samchung 请问一下是如何排除资料中有相同的8位数值类似日期,原理是什么呢?刚刚试完都可以顺利完成太厉害了
作者: samchung (不是咖啡店小开XD)   2019-10-05 19:43:00
关键在正规表达式用来比对的 pattern 结尾部份(?'END'[\s]{0,1})$ 补充说明如下因为有设定 RegexOptions.Multiline所以在每一行比对时可用 ^ 表示行开头,$ 表示行结尾() 表示将符合里面所写条件的字串群组化起来之后使用?'END' 表示给这个群组命名为 END 之后可 ${END} 取用[\s] 表示要出现 \n \r \t \f 或空白任意 "一个"{0,1} 表示前面那个 [\s] 连续出现最少 0 个,最多 1 个好啦,将上面整段放在 pattern 结尾表示日期的8码数字必须出现在每行的结尾才符合条件,若是每行非结尾处的8码数字就不符合条件
楼主: dn42b5 (全世界的暱称都被取光了)   2019-10-05 20:18:00
@samchung 原来是这样,谢谢大大的解说学习到了,获益匪浅!
作者: kobe8112 (小B)   2019-10-05 22:01:00
正规表达法向来是神的领域,每次看都跟天书一样QQ
楼主: dn42b5 (全世界的暱称都被取光了)   2019-10-09 12:47:00
@samchung 请问一个衍生的问题~被取代的日期后可以往前移4个空格吗?
作者: samchung (不是咖啡店小开XD)   2019-10-10 11:47:00

Links booklink

Contact Us: admin [ a t ] ucptt.com