gpt4 book ai didi

batch-file - 使用批处理从字符串中提取子字符串

转载 作者:行者123 更新时间:2023-12-02 01:05:36 24 4
gpt4 key购买 nike

我需要使用批处理文件从字符串中提取子字符串(带下划线的数字)。例如:

我有 AbC_d1344_454_78a。或者 Deg_e23_74_67.

我想提取子字符串 1344_454_78 和 23_74_67。

最佳答案

您有几个带有批处理文件的解决方案。

如果您的数据在数字之前总是有相同数量的字符,您可以做一个简单的子字符串来提取字符串的一部分。因此,这将从字符串中删除前五个字符。

SET "VAR=AbC_d1344_454_78a"
SET "VAR=%VAR:~5%"

但此时您的末尾仍然有字母字符。因此,您可以执行一个简单的 findstr 命令来查看末尾是否有字母字符,如果有,您可以使用另一个子字符串再次剥离它以删除最后一个字符。

SET "var=AbC_d1344_454_78a"
SET "var=%var:~5%"
echo %var%|findstr /R /I /C:"[a-z]$">nul &&SET "var=%var:~0,-1%"

另一种选择是使用 FOR/F 命令并利用 DELIMS 选项通过使用下划线作为分隔符将字符串分解为单独的变量。您可以获得分配给这样的变量的第一个下划线之后的所有内容。

FOR /F "TOKENS=1* DELIMS=_" %%G IN ("AbC_d1344_454_78a") DO SET "var=%%H"

但又一次,您现在有一个前导和尾随字母字符。同样,您可以使用 FINDSTR 命令对其进行测试并去除前导和/或尾随字母字符。

FOR /F "TOKENS=1* DELIMS=_" %%G IN ("AbC_d1344_454_78a") DO SET "var=%%H"
echo %var%|findstr /R /I /C:"^[a-z]">nul &&SET "var=%var:~1%"
echo %var%|findstr /R /I /C:"[a-z]$">nul &&SET "var=%var:~0,-1%"

如果您有多个前导和尾随字母字符,您可以使用标签和 goto 来继续迭代 FINDSTR 命令。

FOR /F "TOKENS=1* DELIMS=_" %%G IN ("AbC_d1344_454_78a") DO SET "var=%%H"
:leading
echo %var%|findstr /R /I /C:"^[a-z]">nul &&(SET "var=%var:~1%" &GOTO leading)
:trailing
echo %var%|findstr /R /I /C:"[a-z]$">nul &&(SET "var=%var:~0,-1%" &GOTO trailing)

根据需要交换任何代码示例。

关于batch-file - 使用批处理从字符串中提取子字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47674822/

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