gpt4 book ai didi

windows - "delims=#+#"- 多于 1 个字符作为分隔符

转载 作者:可可西里 更新时间:2023-11-01 09:47:35 26 4
gpt4 key购买 nike

是否可以定义一个不限于 1 个字符的分隔符?基于标题的示例,我想将我的分隔符定义为例如'#+#'。文本文件/行可以包含这两个字符,但您遇到特定子字符串/文本组合的可能性很小。

最佳答案

不可以,您不能在 delims= 子句中使用 string 作为定界符。当然,您可以包含该字符串,但它将作为一组单独的字符处理,这些字符将用作分隔符,而不是分隔符字符串。

如果您确实需要在字符串上进行拆分,最快的方法可能是将分隔符字符串替换为数据中未包含的字符,并将此字符用作分隔符

@echo off
setlocal enableextensions disabledelayedexpansion

for /f "delims=" %%a in ("this is a +test!! #+# of string #splitting#") do (
set "buffer=%%a"
setlocal enabledelayedexpansion
(for /f "tokens=1,2 delims=¬" %%b in ("!buffer:#+#=¬!") do (
endlocal
echo full line : [%%a]
echo first token : [%%b]
echo second token : [%%c]
)) || if "!!"=="" endlocal
)

注意:需要setlocal enabledelayedexpansion 才能读取在for 循环中更改的变量以检索数据(此处直接模拟包括一个字符串)。然后,在标记读取行的 for 循环内,禁用延迟扩展以避免 ! 字符出现问题(如果延迟扩展处于事件状态,它们将被解析器)。这就是循环内 endlocal 的原因。

由于我们正在进行字符串替换并且可能以仅由定界符组成的字符串结尾,因此内部 fordo 子句可能会不被执行,所以包含最后的 if 以确保取消 enabledelayedexpansion

关于windows - "delims=#+#"- 多于 1 个字符作为分隔符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32690206/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com