Bad*_*aul 5 windows cmd batch-file
是否可以定义一个不限于 1 个字符的分隔符?根据标题的示例,我想将分隔符定义为“#+#”。文本文件/行可以包含这两个字符,但是您很少有机会遇到该特定的子字符串/文本组合。
不,您不能使用字符串作为分隔符delims=。当然,您可以包含该字符串,但它将被视为一组单独的字符,这些字符将用作分隔符,而不是用作分隔符字符串。
如果您确实需要拆分字符串,最快的方法可能是替换分隔符字符串数据中未包含的字符
\n\n@echo off\n setlocal enableextensions disabledelayedexpansion\n\n for /f "delims=" %%a in ("this is a +test!! #+# of string #splitting#") do (\n set "buffer=%%a"\n setlocal enabledelayedexpansion\n (for /f "tokens=1,2 delims=\xc2\xac" %%b in ("!buffer:#+#=\xc2\xac!") do (\n endlocal\n echo full line : [%%a]\n echo first token : [%%b]\n echo second token : [%%c]\n )) || if "!!"=="" endlocal \n )\nRun Code Online (Sandbox Code Playgroud)\n\n注意:setlocal enabledelayedexpansion需要能够读取在for检索数据的循环内更改的变量(此处直接模拟包括字符串)。然后,在for标记读取行的循环内,禁用延迟扩展以避免字符出现问题!(如果延迟扩展处于活动状态,它们将被解析器消耗)。这就是原因endlocal这就是内循环
由于我们是进行字符串替换,并且有可能以仅由分隔符组成的字符串结尾,因此有可能不会执行doinner的子句,所以包含final以确保forifenabledelayedexpansion取消。
| 归档时间: |
|
| 查看次数: |
9166 次 |
| 最近记录: |