标题: [文本处理] [已解决]批处理获取字符串中某一字符出现的位置 [打印本页]
作者: 踏沙行 时间: 2018-8-24 09:45 标题: [已解决]批处理获取字符串中某一字符出现的位置
本帖最后由 踏沙行 于 2018-8-30 05:15 编辑
不使用第三方命令,怎么获取革个字符串在字符中先后出现的位置呢?
下面是我的代码,但是一运行就闪退,很可能是变量嵌套的问题,求大神修正,谢谢。(头痛的问题,每次遇到都胆怯)- rem 获取变量MO代表的字符串中,字符"D"先后出现的位置
- @echo off
- Setlocal enabledelayedexpansion
- set "MO=ABCDEFGDE"
- set/a "o=0"
- :Loop
- if not "%MO:~!o!,1%"=="" (
- if not "%MO:~!o!,1%"=="D" (
- set/a o+=1 &goto Loop ) else (
- set "@o=o" )
- )
- set @
复制代码
作者: Batcher 时间: 2018-8-24 11:01
MO=ABCDEFGDE
以这个字符串为例,你希望得到的结果是什么?
作者: 踏沙行 时间: 2018-8-24 21:04
回复 2# Batcher 其中的“D”出现几次,分别在什么位置?
作者: xczxczxcz 时间: 2018-8-26 20:03
按你的方法- @echo off
- set "MO=ABCDEFGDEADKEFDCFKSEDFASDFGHETYUERTYSDFGHJZXCVBASDFGERSDD"
- set /a n=-1
- set/p=出现 D 的各个位置: <nul
- :LOOP
- set /a n=%n%+1 & set /a n1=%n%+2
- call set "STR=%%MO:~%n%,1%%"
- if defined STR (if "%STR%" == "D" (set/p=%n1% <nul &set /a m=%m%+1)
- goto LOOP)
- echo;&echo;
- echo 共出现 %m% 次 D
- echo;&pause
复制代码
=================
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |