2017-09-15 13 views
0

文字列内の特殊文字と空白を置き換えようとしています。私は正規表現関数がこれに便利だとオンラインで見つけましたが、私はそれを動作させるように見えません。私は、この文字列は変更されません試みるが、正規表現機能が合格ない場合特殊文字を正規表現関数に置き換える際のエラー

Dim param = Regex.Replace("te !,;stDD ", "[^A-Za-z0-9]", "") 

私は、これは正規表現関数がエラー「命令の終了予定を」スローしようと

Set re = New RegExp 
re.Pattern = "[^A-Za-z0-9]" 
param = re.Replace("te !,;stDD ", "") 'string doesn't change on result 
+2

RE.Global = Trueの – Slai

+0

これは、のthnxをそれを修正しました! – sansactions

答えて

3

私はこれをしようとすると、正規表現関数がエラー「命令の終了予定を」スロー:

Dim param = Regex.Replace("te !,;stDD ", "[^A-Za-z0-9]", "") 

正規表現ではなくパーサーによってエラーが発生します。 VBScriptでは、変数を定義して同じステップで値を割り当てることはできません。定義と割り当てを分けなければなりません(明示的な定義が必要な場合)。

Dim param 
param = Regex.Replace("te !,;stDD ", "[^A-Za-z0-9]", "") 

あなたはしかし、コロンで区切ることにより、1行で両方のステートメントを置くことができます。

Dim param : param = Regex.Replace("te !,;stDD ", "[^A-Za-z0-9]", "") 

注意、しかし、VBScriptで静的Replace()方法とはRegexクラスが存在しないということなので、あなたはまだRegex.Replace()からエラーが発生しています。

2番目のコードスニペットのようにRegExpオブジェクトをインスタンス化し、そのオブジェクトのReplace()メソッドを使用する必要があります。

私はこれをしようとすると、文字列が変更されていませんが、正規表現関数は渡さん:

Set re = New RegExp 
re.Pattern = "[^A-Za-z0-9]" 
param = re.Replace("te !,;stDD ", "") 'string doesn't change on result 

しかし、文字列変更を行います。あなたは、入力と出力を詳しく見てみた場合、あなたはわかります

 
"te !,;stDD "  ← input string 
"te !,;stDD "  ← output string 

あなたの交換作業は、文字列からどちらも文字も数字である最初の文字を削除します。最初のスペースであるあなたの例の文字列の場合。あなたはTrueGlobalプロパティを設定する必要があります文字または数字ではありませんすべて文字を削除するために:

Set re = New RegExp 
re.Pattern = "[^A-Za-z0-9]" 
re.Global = True 
param = re.Replace("te !,;stDD ", "") 
+0

広い説明と解決に感謝します! – sansactions

関連する問題