J'ai une bonne quantité de questions et mon premier est comment puis-je faire une simple requête LINQ pour faire correspondre un mot dans un fichier? Je n'essaie pas d'être stupide mais je n'ai pas compris la documentation que j'ai trouvée pour LINQ correctement.Comment puis-je utiliser LINQ pour faire correspondre les mots?
Répondre
créer une nouvelle application WindowsForms et utilisez le code suivant.
you''ll besoin d'ajouter un contrôle d'étiquette d'étiquette, zone de texte et un bouton
using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;
using System.IO;
namespace LinqTests
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
public String[]
Content;
public String
Value;
private void button1_Click(object sender, EventArgs e)
{
Value = textBox1.Text;
OpenFileDialog ofile = new OpenFileDialog();
ofile.Title = "Open File";
ofile.Filter = "All Files (*.*)|*.*";
if (ofile.ShowDialog() == DialogResult.OK)
{
Content =
File.ReadAllLines(ofile.FileName);
IEnumerable<String> Query =
from instance in Content
where instance.Trim() == Value.Trim()
orderby instance
select instance;
foreach (String Item in Query)
label1.Text +=
Item + Environment.NewLine;
}
else Application.DoEvents();
ofile.Dispose();
}
}
}
J'espère que cela aide
euh ouais. Cela m'aide vraiment. Merci – user164203
Bel exemple. Notez qu'il recherche une ligne qui vaut 'Value' (' textBox1.Text'), pas pour un mot, comme vous l'avez demandé dans votre q. Changez la ligne avec 'instance.Trim()' à 'où instance.Trim(). Contient (Value)' ou quelque chose de similaire. – Abel
Merci pour la correction Abel. Très appréciée. –
Qu'en est-il de quelque chose comme ce qui suit?
string yourFileContents = File.ReadAllText("c:/file.txt");
string foundWordOrNull = Regex.Split(yourFileContents, @"\w").FirstOrDefault(s => s == "someword");
(qui a dit que C# ne peut pas être concis?)
Code Te fonctionne en lisant votre fichier, diviser en mots, puis renvoyer le premier mot qu'il trouve que ce qu'on appelle someword
.
EDIT: D'après un commentaire, ce qui précède a été considéré comme "non LINQ". Bien que je ne suis pas d'accord (voir les commentaires), je pense un exemple plus LINQified de la même approche est justifiée ici ;-)
string yourFileContents = File.ReadAllText("c:/file.txt");
var foundWords = from word in Regex.Split(yourFileContents, @"\w")
where word == "someword"
select word;
if(foundWords.Count() > 0)
// do something with the words found
Je ne me dérange pas vous downvoting, mais soyez si courtois pour expliquer pourquoi ou ce qui ne va pas avec le code. – Abel
Je vous ai voté parce que l'utilisateur a spécifiquement demandé un échantillon Linq. Expressions non régulières. –
Merci d'avoir expliqué. Je considère la partie 'FirstOrDefault' de Linq. Le demandeur n'a pas précisé qu'il était interdit d'utiliser des aides. D'autres exemples utilisent 'String.Split', qui revient à la même chose. Il n'est pas possible de diviser avec Linq (ok, c'est le cas, mais cela deviendra fastidieux sur le tableau char). – Abel
Voici un exemple de MSDN qui compte les occurrences d'un mot dans un chaîne (http://msdn.microsoft.com/en-us/library/bb546166.aspx).
string text = ...;
string searchTerm = "data";
//Convert the string into an array of words
string[] source = text.Split(new char[] { '.', '?', '!', ' ', ';', ':', ',' },
StringSplitOptions.RemoveEmptyEntries);
// Create and execute the query. It executes immediately
// because a singleton value is produced.
// Use ToLowerInvariant to match "data" and "Data"
var matchQuery = from word in source
where word.ToLowerInvariant() == searchTerm.ToLowerInvariant()
select word;
// Count the matches.
int wordCount = matchQuery.Count();
Console.WriteLine("{0} occurrences(s) of the search term \"{1}\" were found.",
wordCount, searchTerm);
Et voici un tutoriel plus LINQ sur les données de lecture de fichier texte http://www.onedotnetway.com/tutorial-reading-a-text-file-using-linq/.
- 1. Comment utiliser python regex pour faire correspondre les mots commençant par hash et point d'interrogation?
- 2. Comment faire correspondre les mots Unicode avec ruby 1.9?
- 3. RegEx - Faire correspondre un ensemble de mots
- 4. Ruby Regular Expression pour faire correspondre les mots, y compris les accents et autres caractères UTF8
- 5. Comment utiliser une expression régulière pour faire correspondre un nom?
- 6. Comment programmer pour faire correspondre
- 7. Comment faire pour faire correspondre les parenthèses dans XEmacs?
- 8. Regex pour faire correspondre tous les mots entre un ensemble d'accolades
- 9. Regex pour faire correspondre un mot avec les signes + (plus)
- 10. Utiliser Boost :: Xpressive pour faire correspondre un seul caractère
- 11. Regex pour faire correspondre plusieurs chaînes
- 12. LINQ Requête pour trouver tous les mots-clés?
- 13. Comment faire correspondre un ensemble LINQ-2-Sql
- 14. Comment faire correspondre les informations d'une chaîne
- 15. Comment j'utiliser Contient pour chaîne dans LINQ to Sql pour correspondre seulement le début d'un mot
- 16. Comment "faire correspondre" avec regex?
- 17. Comment pouvez-vous faire correspondre des mots avec plus d'un caractère?
- 18. Comment utiliser Regex pour exclure des mots?
- 19. Expression régulière pour correspondre maximium de cinq mots
- 20. Aide de Regex - faire correspondre les mots en plus des hachages MD5
- 21. Comment faire pour emballer les mots dans Emacs?
- 22. Comment faire pour faire correspondre le filtre Microsoft.Matrix au canevas?
- 23. Regex pour faire correspondre les espaces et les apostrophes
- 24. Tables Regex comment faire correspondre?
- 25. (grep) Regex pour faire correspondre les caractères non-ASCII?
- 26. Regex pour faire correspondre des phrases avec au moins n mots
- 27. Comment faire correspondre les caractères accentués avec PHP preg?
- 28. .net Expression régulière pour faire correspondre deux mots séparés par une virgule ne fonctionne pas
- 29. Comment faire correspondre les noms de paramètres dans une expression?
- 30. Comment faire correspondre avec javascript et regex?
Qu'avez-vous essayé? – ChrisF