相当于std :: string :: find_first:的cmd

C ++,Java,JavaScript和其他可能的编程语言都有一个string函数,用于在string中search指定string模式中的任何字符。 例如,C ++的std::string::find_first_of是这样工作的:

 std::cout << "Vowel found in : " << "Search me for vowels".find_first_of("aeiou") << std::endl; // should print "Vowel found in : 1". 

CMD中是否有相同的内容? 我试图search“DOSstring函数”,但似乎无法find任何东西。

可悲的是,你不解释为什么输出是“1”或“1”表示什么。

 set "string=Search me for vowels" echo %string%|findstr /i "aeiou" >nul echo %errorlevel% 

应该显示errorlevel为0为“发现”和1为“未找到”。

该字符串被echo作为findstr输入。

/i使比较不区分大小写。

>nul抑制输出

"aeiou"意思是“搜索其中的一个字符串”(空格分隔,5个字符串来定位)

当然,这是一个微不足道的例子。 findstr /? 从提示或搜索的例子就会给你更多的交易技巧。

没有直接的方法,但你可以很容易地写出你自己的。

搜索一个字符

 @echo off call :charposition "Search me for vowels" a pos echo Found a at position %pos% goto :eof :charposition set "string_search=%~1" set /a char_pos=0 :charcheck IF %string_search:~0,1%==%2 ( endlocal & set "%3=%char_pos%" goto :eof ) set "string_search=%string_search:~1%" IF "%string_search%"=="" ( set "%3=Not Found" goto :eof ) set /a char_pos+=1 goto :charcheck 

对于多个字符:

 @echo off call :charposition "Search me for vowels" aeiou pos echo Found vowel at position %pos% goto :eof :charposition set "string_search=%~1" set /a char_pos=0 :charcheck echo %2|find "%string_search:~0,1%">nul IF %errorlevel%==0 ( endlocal & set "%3=%char_pos%" goto :eof ) set "string_search=%string_search:~1%" IF "%string_search%"=="" ( set "%3=Not Found" goto :eof ) set /a char_pos+=1 goto :charcheck 

请参阅http://ss64.com/nt/syntax-substring.html获取提取子字符串的语法的解释&#x3002; 如给出的,这些区分大小写。