string - 批处理:如果是某个字符,则仅替换字符串中的第一个字符
问题描述
我有几个这样的数据线:
v1.4.00.29
- SP.CNG v1.0.2.2
Update Kit - Secure USB Token v1.1.1.1
- HI_3997 v1.0.3997.1
- HI_4009 v1.0.4009.1
- HI_3585 v1.0.3585
Update Kit - RM4 v1.0.1202.4
Update Kit - DN Series v1.0.4.1
有没有一些简单的方法来检查第一个字符是否是 a-
然后删除这个加上它们旁边的空格,以便该行与其他行对齐。
我的第一次尝试只是删除-
并spaces
导致一个不好看的结果,因为 ALL-
被替换:
set tmp=!tmp:-=!
set tmp=!tmp: =!
解决方案
您可以使用引用环境变量的“子字符串”方法来执行此操作。简单来说:
%TMP:~n,m%
将从中提取m
字符TMP
,从n
th开始,其中计数从零开始。(您也可以省略,m
获取“字符串的其余部分”并使用负数表示“从字符串的末尾开始”——有关更多详细信息,请参阅 的输出SET /?
)。
在您的情况下,类似以下内容应该可以工作:
if "%TMP:~0,2%" == "- " set "TMP=%TMP:~2%"
这将检查前两个字符是否是减号和空格(如果需要,您可以将其放宽为仅检查第一个字符)。如果匹配,它将替换TMP
为从第三个字符开始的所有字符(0
=1 st,1
=2 nd等)。
推荐阅读
- email - 将 Excel 附加到 MailMessage C# 时,Excel 已损坏
- android - Android studio 布局编辑器总是横向的?
- python - 如何通过 Keras Wrapper(或一般情况下)传递参数?
- firebase - 如何为基于用户的安全性编写实时数据库基本规则?
- java - ReentrantReadWriteLock 中是否有任何 WriteLock 优先于 ReadLock
- android - Play 商店发行说明:只有一种默认翻译可能?
- c++ - mingw32-make.exe[3]: *** [CMakeFiles\myAnswerCpp.dir\build.make:102: myAnswerCpp.exe] 错误 1
- node.js - 纱线工作区:ENOENT:部署期间没有这样的文件或目录 node_modules/.bin/jest
- python - 为什么 a != b != c 不等于 a != b 和 a != c 和 b != c?
- ruby - FATAL: NoMethodError: undefined method `each_char' for ["bundle", "install"]:Array 你的意思是?each_cons