我有一个包含子字符串的字符串,这些子字符串由一组字符分隔,如db.executeSql
,forkJoin
,,
,.
以及其他字符。我需要将该字符串拆分为尽可能多的子字符串。我需要了解与循环的分裂是如何工作的,这样我就可以在需要时添加其他字符。
示例:
-
我需要在此示例中获得5个子字符串的结果: aaa , bbb , ccc , ddd , eee 。在for循环中,我喜欢使用这些子串中的每一个,就像在普通的编程语言中一样。但是这让我很难过。
我喜欢 aaa , bbb.ccc-ddd; eee 。只有2个子串。我做错了什么?也可能有1000个子串。
答案 0 :(得分:2)
FOR /F
将一行分成多个标记(最多31个),但必须定义这些标记。
for /f "tokens=1-31 delims=-.," %%a in ("%string%") do ( echo %%a, %%b, %%c %%d, %%e, %%f, ... )
但在你的情况下,这对于多达100个令牌来说毫无用处。
但是您可以强制FOR /F
假设它获得多行,并且对于每一行,标记化再次开始。
(set \n=^
%=EMPTY=%
)
setlocal EnableDelayedExpansion
FOR %%L in ("!\n!") do (
set "multiLine=!string:-=%%~L!"
set "multiLine=!multiLine:;=%%~L!"
set "multiLine=!multiLine:,=%%~L!"
set "multiLine=!multiLine:.=%%~L!"
)
for /f "tokens=*" %%a in ("!multiLine!") do (
echo # %%a
)
首先,它会将您的所有字符-,;.
替换为换行符\n
FOR /F
基于每行,因此您可以在每个循环中获得%%a
个部分