2013-04-14 106 views
0

我在批处理编程知之甚少,除去从字符串的特殊字符。我想从字符串中删除特殊字符假设如果string =“如何:对,转换特殊字符”想要转换成这个“如何对转换,特殊字符”(如何,如果有喜欢的多个字符做;: )请帮忙!感谢如何使用批处理

回答

0

您可以使用子替换改变单个字符,如彼得·赖特建议,但这种方法保存多个字符,所以多个破折号的进一步变化通过仅一个是必要的。如果您的目标是分离词语只用一个破折号消除多个分离的字符(甚至多个空格),则可以使用不同的方法。

FOR批处理命令过程词语

:由空格(单个或多个)隔开210
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%" 

您必须注意,并非所有特殊字符都可以这种方式处理。

+0

谢谢你这是工作,因为我想。我会花时间让我理解,但现在我可以直接使用此代码。我很高兴再次感谢! – Varun

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 =更换%

它有很大的局限性,但。你会碰到某些字符,如^ =“%除其他问题。

+0

它现在为我工作。我必须添加任何东西到这个代码谢谢 – Varun