我有一个大字符串,看起来像这样
aa bb c d f eeeee ffff
我不确定字符串会带来多少空格。下一次,字符串在aa和bb之间可能有五个空格,所以......
aa bb c f eee ff
有没有办法可以在批处理脚本中使用delim在两个或多个空格(可变数量的空格)上拆分?我总是想要第二个令牌,无论第一个和第二个令牌之间有多少空格。
PS:编辑
我想要第二个令牌(通过令牌我的意思是在分割恰好两个或更多个空格后获得的令牌)。我的令牌本身可以包含一个空格。示例:a b c d
。
在此想要提取b。
另一个例子:a b b c d
。
在这里我想提取b b。
答案 0 :(得分:1)
(收集各种评论:标记由两个或多个空格分隔;您需要第二个标记;每个标记可能有也可能没有单个空格)
我评论了每一步,并添加了echo
来显示进度。
@echo off
setlocal
set "string=ads ads d b c dsad ds ads"
echo 1: "%string%"
REM remove first token (delimited by ecactly two spaces):
set "string=%string:* =%"
echo 2: "%string%"
REM remove leading spaces:
for /f "tokens=*" %%a in ("%string%") do set "string=%%a"
echo 3: "%string%"
REM remove third and next tokens (delimited by two or more spaces)
set string=%string: =&REM %
echo 4: "%string%"
只有更改为我之前问题的答案才能删除前导空格for
答案 1 :(得分:0)
未来读者的通知:
在 OP添加重要文本I always want the second token no matter how any spaces are there between first and second tokens.
请在投票/评论前阅读原始问题
没有
delims
表示令牌由any sequence of any of the defined delimiter characters
分隔。
因此,您的示例字符串将被处理为7个单独的标记。
如果您告诉我们您尝试做什么,可能会有所帮助。采取的方法通常取决于期望的结果。
这可能与您尚未回复的https://stackoverflow.com/a/48808982/2128947相关联。