![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-09-28 02:16 |
共 47,813 主题排行 / 349,918 发帖 / 今日 0 篇 / 48,277 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » 也出一题,娱乐娱乐:以子串为分隔符现实字符串的内容 |
| 可打印版本 2,132 / 25 |
| 第1楼 26933062 | 发表于 2008-05-12 00:43 |
| 银牌会员 发帖 879 积分 2,268 | |
|
也出一题,娱乐娱乐:以子串为分隔符现实字符串的内容 set "Str=bat1 ,1bbat;22 t2bat;3 ,3 3bat444babat"
要求以字符串bat为分割符,显示变量str的内容 变量str中bat的位置和数量都不确定。 如上面显示的结果是 1 ,1b ;22 t2 ;3 ,3 3 444ba 前提:不允许把bat替换成某一单一字符后再用for截取。 ───────────────── 版务记录 ───────────────── 执行:HAT 操作:在帖子标题中增加搜索关键字 说明:原标题"也出一题,娱乐娱乐。"不利于论坛搜索 ───────────────── 版务记录 ───────────────── [ Last edited by HAT on 2008-11-9 at 02:49 ] |
|
| 第2楼 slore | 发表于 2008-05-12 01:12 |
| 铂金会员 发帖 2,478 积分 5,212 | |
|
似乎有个帖子……
|
|
| 第3楼 pusofalse | 发表于 2008-05-12 01:15 |
| 银牌会员 发帖 646 积分 1,604 | |
|
把 bat 删除也不行吗?~
|
|
| 第4楼 bat-zw | 发表于 2008-05-12 01:17 |
| 金牌会员 发帖 1,276 积分 3,105 | |
| 第5楼 26933062 | 发表于 2008-05-12 01:25 |
| 银牌会员 发帖 879 积分 2,268 | |
|
4 楼 zw19750516 兄弟,显示结果漏掉了不少字符啊。。
2楼 意在娱乐,动动脑筋,有没有过这个帖无所谓吧。 3楼 删除可以,只要达到效果。 |
|
| 第6楼 HAT | 发表于 2008-05-12 01:30 |
| 版主 发帖 5,017 积分 9,023 | |
Originally posted by zw19750516 at 2008-5-12 01:17 AM: |
|
| 第7楼 bat-zw | 发表于 2008-05-12 01:34 |
| 金牌会员 发帖 1,276 积分 3,105 | |
|
有这个嫌疑,呵呵,不能把bat替换成单一字符,等于卡死了答题人的脖子。
本来是多么容易的事啊: [ Last edited by zw19750516 on 2008-5-12 at 01:38 AM ] |
|
| 第8楼 terse | 发表于 2008-05-12 01:35 |
| 银牌会员 发帖 946 积分 2,404 | |
|
替换 #=bat 不允许吗
|
|
| 第9楼 26933062 | 发表于 2008-05-12 01:36 |
| 银牌会员 发帖 879 积分 2,268 | |
Originally posted by HAT at 2008-5-12 01:30: 这个相信大家都知道,只是想考考大家的思路,喜欢动脑筋的就动动脑筋,认为无聊的就全当是个水帖吧。。^_^。。 |
|
| 第10楼 26933062 | 发表于 2008-05-12 01:37 |
| 银牌会员 发帖 879 积分 2,268 | |
Originally posted by zw19750516 at 2008-5-12 01:34: 并非没有答案。。。。。 |
|
| 第11楼 HAT | 发表于 2008-05-12 01:55 |
| 版主 发帖 5,017 积分 9,023 | |
|
我的思路是先获取bat在str中的位置(这一步已经完成),然后依次截取就行了(思考中),不知是否和 26933062 兄的想法一样。
|
|
| 第12楼 terse | 发表于 2008-05-12 01:56 |
| 银牌会员 发帖 946 积分 2,404 | |
|
@echo off&setlocal enabledelayedexpansion
set "var=bat1 ,1bbat;22 t2bat;3 ,3 3bat444babat" set var=%var: =#% set var=%var:;=`% set var=%var:bat= % call:lp "%var%" pause goto :eof :lp for /f "tokens=1* delims= " %%i in (%1) do ( set var=%%i set var=!var:#= ! set var=!var:`=;! echo !var! call :lp "%%j" ) [ Last edited by terse on 2008-5-12 at 01:58 AM ] |
|
| 第13楼 slore | 发表于 2008-05-12 02:02 |
| 铂金会员 发帖 2,478 积分 5,212 | |
Originally posted by terse at 2008-5-12 01:56: pause 应该放在:lp上面……而不是下面 而且还是违规替换了bat…… |
|
| 第14楼 26933062 | 发表于 2008-05-12 02:09 |
| 银牌会员 发帖 879 积分 2,268 | |
|
呵呵, terse 疯狂大替换,缺点是如果变量本身含有#号,则显示结果少字符。
并且将bat替换为空格,再用for以空格为分割符截取,属违规。。。 |
|
| 第15楼 bat-zw | 发表于 2008-05-12 02:13 |
| 金牌会员 发帖 1,276 积分 3,105 | |
|
我再来: [ Last edited by zw19750516 on 2008-5-12 at 02:22 AM ] |
|
| 1 2 下一页 |
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |