我对批量编程知之甚少。我想从字符串中删除特殊字符假设如果字符串=“如何:转换特殊字符”想要转换为“如何转换特殊字符”(如果有多个字符如何,如何处理;;: )请帮忙!谢谢
答案 0 :(得分:4)
@ECHO OFF
SETLOCAL
SET String=" How:to,convert special characters how to do if there are multiple characters like ,; : "
SET string1=%string:,=comma%
SET string2=%string:;=semicolon%
SET string3=%string::=fullcolon%
SET string4=%string3:;=SEMICOLON%
SET string4=%string4:,=COMMA%
SET string
简单的公式是SET varname2 =%varname1:stringtoreplace = replacement%
但确实有限制。你会遇到某些字符的问题,比如^ =“%等等。
答案 1 :(得分:0)
您可以使用子串替换来更改单个字符,正如Peter Wright建议的那样,但是此方法保留了多个字符,因此需要进一步更改多个短划线。如果您的目标是将单词与一个短划线分开,从而消除多个分隔字符(甚至多个空格),那么您可以使用不同的方法。
以空格(单个或多个)分隔的FOR
批处理命令进程单词:
for %%a in (one two three four ) do echo %%a
one
two
three
four
您可以使用延迟扩展将FOR
命令处理的单词收集到一个变量中(有关详细信息,请键入set /?
并查找“延迟扩展”):
setlocal EnableDelayedExpansion
set string=
for %%a in ( one two three four ) do set string=!string! %%a
echo "%string%"
" one two three four"
FOR
字的标准分隔符可以是逗号,分号和等号,除了空格(单个或多个):
for %%a in (one,two= ;; ,, three ===;;;,,, four ) do ...
这样,您可以直接使用FOR
命令来消除多个空格,逗号,分号(和等号):
for %%a in (%string%) do ...
如果你想再删除一个字符(比如冒号),你可以在同一FOR
命令中用空格(或逗号,分号或等号)改变那个字符:
for %%a in (%string::=;%) do
如果您想消除更多字符,可以先在字符串中更改所有字符,然后使用FOR
。
下面的批处理文件读取一个字符串并更改多个空格,逗号,分号,(等号);冒号和点,并在单词之间插入一个短划线:
@echo off
setlocal EnableDelayedExpansion
set /P input=Enter a string:
set input=%input:.=,%
set output=
for %%a in (%input::=;%) do set output=!output!%%a-
rem Eliminate the last dash:
set output=%output:~0,-1%
echo Output: "%output%"
您必须注意,并非所有特殊字符都可以通过这种方式处理。