2016-10-16 8 views
-4

私はC#のイントロクラスを取っていますので、複雑で単純なメソッドやループは使用していません。私は研究し、私たちがやろうとしているこの電子メールチェックの割り当てのために文字列メソッドを使用する方法の詳細を見つけることを試みてきました。しかし、私が何かを探すたびに、私は正規表現を使用することができません。C#String methods email check

文字列メソッドに精通しているだけであれば、コーディングに慣れている人なら、文字が特定の文字列の後にあるかどうかを調べる文字列メソッドの例をどこから始めるか、または文字列の文字が実際に存在するかどうかを調べます。

私はIndexOfメソッドを使用することを考えていましたが、教授は方法でそれを実装してメインメソッドに戻す方法があまりにもわかりませんでした。

これはいい場所ですか? IndexOfを使用して、ハードコードされた電子メールアドレスに「@」記号が含まれているかどうかを確認すると、そのインデックス番号を取得するか、falseの場合は-1を取得します。どのようにメインメソッドに戻るメソッドで使用されるでしょうか?

+0

ようこそ!研究から始めよう。実験する;デバッグし、最後に宿題を提出してください。よく願っています。 [ask] – MickyD

+0

文字列を[char配列](https://msdn.microsoft.com/en-us/library/2c7h58e5(v = vs.110).aspx)として読み、[電子メールの文法] (https://tools.ietf.org/html/rfc5322#section-3.4.1)、[バックトラッキング](https://en.wikipedia.org/wiki/Backtracking)[アルゴリズム](https: //en.wikibooks.org/wiki/Algorithms/Backtracking)。解析の詳細については、[Dragon Book](https://en.wikipedia.org/wiki/Compilers:Principles,_Techniques,__Tools)を参照してください。 Algoは[Unit Testsのための電子メールのリスト]を取得します(http://stackoverflow.com/questions/7641019/list-of-mock-valid-invalid-email-addresses-for-unit-tests)。 – Theraot

+0

助けてくれてありがとう!私は、char配列にショットを与え、それがどうなるかを見ていくと思います。 –

答えて

0

IndexOfは存在する要素の位置を返します。存在しない場合は-1を返します。

ifステートメントでString.IsNullOrEmpty(value)を実行し、値が設定されていない場合はfalseと返信してください。次に、ifの文内で、「@」がIndexOfを使用していることを確認してから、value.LastIndexOf(".")を実行します。 "@"があり、最後のインデックス値が "。"の最後のインデックスよりも小さい場合...電子メールは有効です。

「@」文字が存在する場合は、その数が1かどうかを確認することもできます。 forループとカウント値を使用するか、value.Toarray().where(x=>x == "@") > 1を使用してください。

+0

ありがとう、ありがとう! –

+0

これとは対照的に、より多くのチェックがあります。 'name @@ domain @ .'のような電子メールアドレスはあなたのテストに合格しますが、それは無効です。 1. '@ '文字を使用して'電子メール 'を分割し、その部分を数えます。チェックを続けるには、それらは正確に2でなければなりません。 2.各パーツがドットで開始または終了しないことを確認します。 'string.StartsWith'と' string.EndsWith'を使用してください。 3.お互いの後に2つのドットがないことを確認してください。 'IndexOf(" .. ")'は '-1'でなければなりません。 – SollyM