2017-12-07 7 views
0

私はA.B.C.D_Eのような2つの文字列を持っているし、他の文字列に私が持っているのアウトラインレベルのコードチェック「を。 _ *」strに示すように。 両方の文字列が同じアウトラインレベルコードにあり、両方が同じ構造を持っているかどうかをチェックしたいと思います。2文字列の特殊文字と同じパターンです。二つの文字列

私は以下を試みました。

string str= "*.*.*.*_*"; 
str= str.Replace("*", ""); 

だから、私は点とダッシュだけを得て、それらを数えることができます。

string abc = "A.B.C.D_E"; 
var count = Regex.Matches(abc, ".").Count; 
var countdash = Regex.Matches(abc, "_").Count; 
count= count+countdash; 

countが文字列の文字と等しい場合は、文字列の文字列と同じ形式です。 残念ながら、この解決策は異なるフォーマットでは機能しません。 これを実行する方法はありますか?

+0

文字列をドットとダッシュに変換してください(非正規のドットとダッシュをすべて変換して比較する必要があります)。 – Tvde1

+0

したがって、ドットとダッシュ以外のすべての文字を削除する必要があります。 – Student

+0

[a-zA-Z0-9 - ]これはすべての文字を与え、削除できます。 – Student

答えて

1

でない任意の文字と一致します。

private string RemoveExtraText(string value) 
    { 
     var allowedChars = "._"; 
     return new string(value.Where(c => allowedChars.Contains(c)).ToArray()); 
    } 

"A.B.C.D_E"の文字列です。この関数は "...._"を返します。それを他の文字列と比較して、両方が同じパターンを持っているかどうかを調べることができます。

0
string abc = "*.*.*.*_*"; 
string str = "...._*"; 
bool isMatch = Regex.Replace(abc, "[^._]", "") == Regex.Replace(str,"[^._]",""); 

[^ ._]ドットとダッシュを除くすべての文字を削除し、それらを比較され、あなたが何ができるかドットまたはダッシュ

+0

彼は2つの文字列に一致することを望んでいますが、1つはパターンに一致しません。 – Tvde1

+0

ああ、私は誤解しました。私は私の答えを更新しました – weew

関連する問題