作者don750421 (1+1≠2)
看板C_Sharp
标题[问题] 有办法模糊比对取得档案INDEX吗?
时间Thu Dec 17 23:43:45 2015
假设有数个档案,要如何透过模糊比对取得档案INDEX?
当然,一定会有以下保证规则:
1. 档名长度一定相同
2. 档案INDEX一定为两码数字
3. 档案INDEX的位置一定相同
4. 档案INDEX一定介於01~10
范例一:假设资料夹内有以下档案
ABCAB01.txt ==> 01
ABCAC02.txt ==> 02
ABCAD05.txt ==> 05
范例二:假设资料夹内有以下档案
ABCA401DF.txt ==> 01
ABCA802FV.txt ==> 02
ABCA905EF.txt ==> 05
范例三:假设资料夹内有以下档案
ABCA401DF.txt ==> 01 这种就算是FAIL,
ABCA8G2FV.txt ==> ?? 因为只要其中一个无法取出。
ABCA905EF.txt ==> 05 则其他取出的就无参考意义
范例四:假设资料夹内有以下档案
ABCA401DF.txt ==> 01 这种就算是FAIL,
ABCA824FV.txt ==> 24 因为上面一定有保证,档案Index介於01~10,
ABCA905EF.txt ==> 05 则其他取出的就无参考意义
有想过或许正规表示法有办法取得,但是要如何抓取到第N个字元的位置...
好像又是另一个问题@@...
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 114.39.52.150
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/C_Sharp/M.1450367028.A.936.html
1F:推 leicheong: 把字串中的数字换成N其他转成T, "."看你要不要换, 12/18 00:10
2F:→ leicheong: 然後直接比较不行吗? 12/18 00:10
3F:→ leicheong: 另外401DF那个看不懂为什麽会fail. 12/18 00:11
4F:→ leicheong: 要保证是01到10的话在检查IsDigit时偷看下一个数字即可 12/18 00:14
5F:→ leicheong: 感觉当成2维的char array比较易处理. 12/18 00:16
6F:推 autumn10109: 905 ok但401 fail 12/18 09:24
7F:→ autumn10109: 是还有其他规则吗? 12/18 09:25
8F:推 Ammenze: 第三段应该是说3个档案有一个抓不出正确规则的数字就整 12/18 13:24
9F:→ Ammenze: 个3档案都算fail吧 12/18 13:25
楼上前辈说对了,以范例三而言,假设在同一个位置,有其中一个档案无法取出Index
则就判断Fail,因为也无法证明其他两个的顺序是否正确...
※ 编辑: don750421 (220.142.142.51), 12/18/2015 22:37:31
10F:→ Litfal: 这没很难啊?跑两层回圈不就好了? 12/18 23:24
11F:→ don750421: 两层回圈?每个资料内的档案index也有可能出现在第1、2 12/19 10:23
12F:→ don750421: 码 12/19 10:23
13F:→ autumn10109: 所以是index位置根本不固定?但每次所有档名的index 12/19 11:41
14F:→ autumn10109: 必须在同个位置才ok 12/19 11:42
15F:→ Litfal: 第一层当然是跑所有档案档名,第二层看你是要用字串解析还 12/19 13:55
16F:→ Litfal: 是REGEX,分析出档名内有几个部位符合\d{2},例如ABC102就 12/19 14:02
17F:→ Litfal: 解析成list of <index,value> = {{3,10},{4,2}} 12/19 14:03
18F:→ Litfal: 再取所有FILE的某index都有值的,就是结果。 12/19 14:05
19F:→ Litfal: 当然可以在过程中优化减少运算量 12/19 14:06
20F:→ Litfal: PS.我的index是指数字在档名中的位置,跟你的INDEX不同 12/19 14:07