中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-08-12 07:18
47,811 主题排行 / 349,897 发帖 / 今日 0 篇 / 48,256 会员排行
DOS批处理 & 脚本技术(批处理室) » [求助]文本指定符号之间的字符替换
可打印版本  1,401 / 12
第1楼 cnxyc 发表于 2010-12-04 14:13
新手上路 发帖 15 积分 15
[求助]文本指定符号之间的字符替换
文本文件有上千行,每一行内容由英文的逗号分隔为5部分,例如:ab,f1,10000,10000,1000要求检测第二部分字符长度,大于4则提示出错并显示行号,判断第二部分的英文字母个数,如果有多个则只保留第一个,然后把此英文字母替换为数字,如果为a则换为101,为b则换为102,以此类推,如这里的f则换为106。补充,这里的英文不分大小写,可使用外部命令。

[ Last edited by cnxyc on 2010-12-4 at 14:27 ]
第2楼 Hanyeguxing 发表于 2010-12-04 14:55
银牌会员 发帖 897 积分 1,039 来自 在地狱中仰望天堂
1,文本是否只包括数字,字母以及逗号?
2,提示错误需要输出到文本吗?
3,替换后将5部分数据写回到源文件?
4,z为126还是1026?
5,当字符大于4个时,是否也进行字符替换
6,第2部分的数据是否由“n个字码+n个数字”构成?还是字母和数字混在一起?

[ Last edited by Hanyeguxing on 2010-12-4 at 15:07 ]
第3楼 cnxyc 发表于 2010-12-04 15:37
新手上路 发帖 15 积分 15
谢谢hanyeguxing的热心提问!
谢谢hanyeguxing的热心提问!
1:文本只包括数字、字母以及逗号。
2:提示出错不需要输出到文件,只需要暂停等待用户响应然后终止程序。
3:替换后将5部分数据写到新文件,源文件保留。
4:这个问题是我疏忽了,对不起。这里如果为z则替换为126
5:当字符大于4时不进行替换,提示错误信息,显示行号,提示用户修改然后重新执行批处理。
6:第二部分数据有几种情况出现,1个字母,3个数字,1个字母加1个数字,4个数字。
第4楼 Hanyeguxing 发表于 2010-12-04 17:14
银牌会员 发帖 897 积分 1,039 来自 在地狱中仰望天堂


[ Last edited by Hanyeguxing on 2010-12-4 at 17:52 ]
第5楼 cnxyc 发表于 2010-12-04 18:35
新手上路 发帖 15 积分 15
谢谢解答!
谢谢孤星的解答,如果我需要把英文字母转换为其他数字呢?就是转换过程不能用运算的方法,而是直接替换,比如现在想把
a转为107
b转为120
c转为166
因为下午在上班,没能及时回复,对不起啊。
第6楼 Hanyeguxing 发表于 2010-12-04 18:47
银牌会员 发帖 897 积分 1,039 来自 在地狱中仰望天堂
修改:部分,例如:

[ Last edited by Hanyeguxing on 2010-12-4 at 18:56 ]
第7楼 cnxyc 发表于 2010-12-04 19:19
新手上路 发帖 15 积分 15
我是初学,没明白意思。
不好意思啊,初学。我把我现在要转换的贴出来,你帮忙改改代码。还有就是第一部分数据的长度不定,不过一般都在10位以下。以后要换其他转换数字我自己慢慢摸索吧。谢谢!
a转为166
b转为120
c转为654
d转为602
e转为922
f转为202
g转为904
h转为148
i转为610
j转为589
k转为921
l转为563
m转为248
n转为562
o转为357
p转为918
q转为750
r转为548
s转为181
t转为233
u转为919
v转为600
w转为677
x转为667
y转为220
z转为107
第8楼 cnxyc 发表于 2010-12-04 19:40
新手上路 发帖 15 积分 15
贴个示例
BG001,Z,100000.047,200000.581,1000.583
BG002,Z,104400.330,265000.458,1200.653
1000,B,107500.580,208500.068,1040.558
1001,B1,189500.588,255000.589,1100.583
1002,F,105840.584,268000.451,1060.483
1100,F1,102570.657,272000.471,1050.123
5,F2,108560.586,258980.571,1050.333
6,5482,100580.586,204570.541,1005.222
7,FF2021,55565.585,648555.444,1254.568
第9楼 Hanyeguxing 发表于 2010-12-05 02:26
银牌会员 发帖 897 积分 1,039 来自 在地狱中仰望天堂
到底要转换哪部分里的字母?
第10楼 cnxyc 发表于 2010-12-05 12:10
新手上路 发帖 15 积分 15
转第二部分的字母
第11楼 cnxyc 发表于 2010-12-05 12:14
新手上路 发帖 15 积分 15
示例中最后一行第二部分数据是故意那样输的
示例中最后一行第二部分数据是故意那样输的,目的是测试批处理排错功能。
第12楼 Hanyeguxing 发表于 2010-12-05 12:25
银牌会员 发帖 897 积分 1,039 来自 在地狱中仰望天堂
只对第二部分检查、替换:
第13楼 cnxyc 发表于 2010-12-07 01:21
新手上路 发帖 15 积分 15
大哥,谢谢啦!
帮我大忙了,虽然感谢的话在这里显得很苍白,但我还是谢谢孤星大哥的热心!
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023