2013-04-14 101 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