2010-05-05 2 views
0

Ce que je passe est deux fichiers, un fichier contient:C# deux fichiers texte correspondant puis de copier sur

orange d'Apple

Le second fichier contient orange ~ 1.txt orange ~ 2321. txt d'Apple ~ 12.txt d'Apple ~ 23.txt Ap ~ 23.txt OROR ~ 23.txt

ce que je dois faire est est si le premier correspond à une ligne dans le fichier du second fichier, la copie qui déposer sur un nouveau direc tory. Ce que je fais maintenant ne trouve jamais aucun élément correspondant.

string[] content = File.ReadAllLines(@"C:\Cact.txt"); 
      string[] mastercontent = File.ReadAllLines(masterdin + "\\Master.txt"); 
      foreach (string con in content) 
      { 
       if (mastercontent.Contains(con)) 
       { 
        File.Copy(masterfolder + "\\" + con, masterdin); 
       } 
      } 

Répondre

2

Vous appelez la méthode LINQ Contains sur le tableau, qui retourne vrai si le tableau contient une chaîne qui est exactement égale à con.

La solution la plus simple consiste à remplacer mastercontent par une seule chaîne en appelant File.ReadAllText.
Appelez le String.Contains et vérifiez si con apparaît n'importe où dans la grande chaîne. (Cela se comporterait différemment si con a des sauts de ligne, mais il ne peut pas)

Vous pouvez également utiliser LINQ pour vérifier si mastercontent a des chaînes contenant con, comme celui-ci:

if (mastercontent.Any(m => m.Contains(con)) 

EDIT: Pour faire correspondre insensible à la casse, vous pouvez le modifier comme suit:

if (mastercontent.Any(m => 0 >= m.IndexOf(con, StringComparison.OrdinalIgnoreCase)) 
Questions connexes