2017-07-06 16 views
0

2つの異なる.txtファイル(requested_description.txtとall_description.txt)があります。2つの異なるファイルの文字列の比較vb.net

all_description.txt

ジョンは
マイクは医師
バーバラがモデルである警官です:all_description.txtで

私は、このような何かを文字列のリストを持っています
など...

他のファイル(requested_description.txt)で、私は(all_description.txt)

requested_description.txt

ジョン
マイケル
イワン
ドナルド
バーバラ最初のファイルから名前を検索します
など...

私はその後、私は例えば、出力に結果を表示したいrequested_description.txtからの文字列(名前が)all_description.txt

に同じであれば、検索したい:

ジョン>ジョンは警官である
はバーバラ>バーバラは今のモデル

である私はそのように、私はここで少しこだわっているfor each...を使用昇順にソートする最初、私はsortメソッドを使用すると、コードの唯一のこの種を持っている:

Dim i As Integer = 0 
    Dim ReadAllDescrpt As String() =File.ReadAllLines("all_description.txt") 
    Dim RqstDescription As String()= File.ReadAllLines("rqst_description.txt")  

    Dim allDescrpt As New List(Of String()) 
    allDescrpt.Sort() 
    For Each descrpt In ReadAllDescrpt 
    Console.WriteLine(ReadAllDescrpt) 
    Next 
    Console.WriteLine() 

答えて

0

ソートする代わりに、.Containsを使用して一致するかどうかを確認することができます。それらに合ってください。

Dim ReadAllDescrpt As String() =File.ReadAllLines("all_description.txt") 
    Dim RqstDescription As String()= File.ReadAllLines("rqst_description.txt")  

    Dim allDescrpt As New List(Of String) 
    For Each person as string In RqstDescription 
    dim desc as String = ReadAllDescrpt.FirstOrDefault(Function(x)x.Contains(person)) 
if desc <> "" Then Console.WriteLine(person & " > " & desc) 
    Next 

私はこれをテストしていませんが、これは、それがどのように動作するかを次のとおりです。あなたのコードを使用して

小さな例、。これはLINQも使用します。 :)

0

ここでは、並べ替えと文字列の配列を行ごとにチェックする簡単な例です。

Dim ReadAllDescrpt As String() = File.ReadAllLines("all_description.txt") 
Dim RqstDescription As String() = File.ReadAllLines("requested_description.txt") 
Array.Sort(RqstDescription) 
For i As Integer = 0 To RqstDescription.Length - 1 
    For j As Integer = 0 To ReadAllDescrpt.Length - 1 
     If ReadAllDescrpt(j).Contains(RqstDescription(i)) Then 
      Console.WriteLine(RqstDescription(i) & " > " & ReadAllDescrpt(j)) 
     End If 
    Next 
Next 
+0

これは私のためにうまくいきます。今度はこのコードを勉強します! Tnx。 – megatron1986

0

Simpler LINQでは、Joinを使用してください。 rqst_descriptionの名前とall_descriptionの最初の単語に参加します。姓と名字を使用することになった場合、それに応じて参加する必要があります。

Sub Main() 
    Dim descriptions As String() = File.ReadAllLines("all_description.txt") 
    Dim names As String() = File.ReadAllLines("rqst_description.txt") 

    Dim result = From name In names 
       Join description In descriptions On name Equals _ 
        description.Split({" is a "}, StringSplitOptions.None).First() 
       Select String.Format("{0} > {1}", name, description) 

    For Each s In result 
     Console.WriteLine(s) 
    Next 
    Console.ReadLine() 
End Sub 

あなたのコメントによると、ファイルが

all_descriptionを変更しました。TXT

ジョンはナイスガイ

rqst_description.txt


マイクが
バーバラがモデル
イワンザ・ひどいです医者で警官されていますジョンスミス
ミシェエル
イワン雷帝
ドナルド
バーバラ

出力

イワンはひどい>イワンザ・ひどいがナイスガイ
バーバラです>バーバラは、モデル

です

注:作品も含まれていますが、私はetc...を恐れています。 [含む]を使用している場合は、偽の一致(Jon/Jonathan is a janitor)が発生する可能性があります(管理者には犯行はありませんが、Jonは1ではありません)。

+0

私はあなたのソリューションを使用しようとしましたが、うまくいかず、何も起こりません。そして、あなたは正しかった、私は100%マッチを取得しないため、私は使用を含めることができません。 – megatron1986

+0

もう何も起こらないともう少し説明できますか? – djv

+0

結果は何もない、私は出力結果を得ることができない... – megatron1986

関連する問題