gpt4 book ai didi

string - 批量 * 通配符替换

转载 作者:行者123 更新时间:2023-12-02 02:44:18 27 4
gpt4 key购买 nike

我有一个 *+* 形式的字符串 base。我想得到+之前的所有内容。例如,如果 base=foo+bar,我想获取 foo

我尝试过使用字符串替换来实现

set left=%base:+*=%

但这会导致 left 存储 foo+bar

有趣的是,字符串替换可以使 + 的所有内容正确:

set right=%base:*+=%

+* 是否被 + 替换(即通配符替换 0 个字符)?有更好的方法来完成我的任务吗?

编辑:我实际上是在 for 循环中执行此操作。因此,延迟扩展已开启并且(我认为)我需要使用!。完整代码在这里:

for /d %%d in (*+*) do (
set base=%%d
set right=!base:*+=!
set left=!base:+*=! ::this part doesn't work
if !left:~-2!==!right:~-2! ( ::do only if last 2 chars match
copy %%d mirrors
copy %%d\%%d_montage.bmp mirrors
)
)

编辑2:上面代码中的注释仅用于此处的可读性。::风格的注释在 for 循环中可能无法正常工作。

最佳答案

您可以使用this trick :

@echo off

set "base=foo+bar"

set "left=%base:+=" & set "right=%"

echo Left=%left%
echo Right=%right%

编辑:如果您想在 for 循环中使用该方法,请按以下方式使用:

@echo off
setlocal EnableDelayedExpansion

for %%a in ("one+two" "first+last") do (
call :separate %%a
echo Left=!left!
echo Right=!right!
echo/
)
goto :EOF

:separate
set "base=%~1"
set "left=%base:+=" & set "right=%"
exit /B

关于string - 批量 * 通配符替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31440226/

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