2017-07-21 11 views
0

ここからポストからいくつかのコードをサンプリングしました。私はLINQで.txtファイルを読み込み、ユーザー名が実際にその内部にあることを(ifステートメントで)確認してから、パスワードが存在するかどうかをチェックする別のifステートメントに進み、抽出しますその情報。if文でLINQを使用して、特定の 'username'と 'password'文字列を.txtで検索します。

.txtファイルがどのように適切にこのコードを回避んこの

<Site> ||<Email/User>    ||<Password>   
Google     | UserNameOk123    | Password12312   
Facebook    | [email protected]   | 832188981323   
Gmail     | [email protected]   | password1 
Yahoo (lol)   | [email protected]   | shtein998877 
Reddit     | wildsavage2     | 88ca$     
reddit.com    | patrickthestar     | krustykrabs22   
iCloud     | [email protected]     | gigihadid8$ 

のようにフォーマットされます。あなたができる(コンパイルされません)

public void ScanFile(string input) 
{ 
    string[] AllLines = new string[];  
    AllLines = File.ReadAllLines(FILE_PATH); 
    Parallel.For(0, AllLines.Length, x => 
    { 
     if (from lines in AllLines 
      where lines.StartsWith("firstHalfOfUsername") 
      && lines.EndsWith("secondHalfOfUsername") 
      select line) 
     { 
     } 
    }); 
} 
+0

このアプリケーションは人が利用しますか?または、ユーザーのパスワードをプレーンテキストで保存していますか? – maccettura

+0

その個人的な使用、私は最終製品の前にビンで暗号化します:) –

+0

ファイルを暗号化しますか?それだけでは不十分です。パスワードを暗号化してハッシュする必要があります。 – maccettura

答えて

0

代わりにLINQクエリ式を使用しますそれは拡張メソッドで:

if(AllLines.Any(line=> lines.StartsWith("firstHalfOfUsername") && lines.EndsWith("secondHalfOfUsername"))) 
{ 
//... 
} 

私はそれが可読性の助けになると信じている

+0

もう1つの質問ですが、File.ReadAllLinesのために、アプリケーションはすべての行を繰り返し処理して配列に分割するのにかなりの時間がかかります。指定されたfirsthalf/seconhalf文字列が見つかるまで、読みやすくする方法がありますか?文字列が見つかったかどうかに応じてブール値を返す 'StreamReader'を実行することを考えています –

+1

これに次の答えを使用できます:https://stackoverflow.com/a/9643111/5151500 – lukbl

関連する問題