Rechercher et remplacer des valeurs dans un fichier texte avec C#
J'ai un fichier texte avec un certain format. D'abord un identificateur suivi de trois places et de deux points. Puis vient la valeur de cet identifiant.
ID1 :Value1
ID2 :Value2
ID3 :Value3
Ce que je dois faire est de la recherche par exemple, pour ID2 :
et remplacer Value2
avec une nouvelle valeur NewValue2
. Ce serait une façon de le faire? Les fichiers que j'ai besoin d'analyser de ne pas obtenir de très grand. Le plus important sera d'environ 150 lignes.
vous devez spécifier le type de Valeur1, Valeur2... Entier, chaîne de caractères?
OriginalL'auteur Robert Strauch | 2012-08-09
Vous devez vous connecter pour publier un commentaire.
Si le fichier n'est pas si grand que vous pouvez faire un
File.ReadAllLines
d'obtenir une collection de toutes les lignes, puis remplacez la ligne que vous recherchez comme cealors qu'il pourrait aller pour le Fichier.ReadAllText et d'analyser l'un des grands de la chaîne, je vais mettre que exemple si il dit que c'est un problème; d'autre part.. il a dit que le fichier a été de 150 lignes
Oui, chaque ID est certainement sur une nouvelle ligne.
Bien que toutes les variantes semblent répondre à ma question, j'ai choisi celui-ci car il m'a donné l'idée de comment le résoudre 🙂
OriginalL'auteur mtijn
Voici une solution simple qui a également crée une copie de sauvegarde du fichier source automatiquement.
Les remplacements sont stockées dans une
Dictionary
objet. Ils sont munis d'un détrompeur sur la ligne de l'IDENTIFIANT, par exemple 'ID2' et la valeur est la chaîne de caractères de remplacement nécessaire. Utilisez simplementAdd()
pour ajouter plus que nécessaire.Vous aurez juste à remplacer
input.txt
,output.txt
etinput.bak
avec les chemins d'accès à votre source, la destination et les fichiers de sauvegarde.veuillez consulter les mises à jour de l'exemple ci-dessus.
OriginalL'auteur Dave R.
Normalement, n'importe quel texte de la recherche et de remplacement, je vous suggère une sorte d'expression régulière de travail, mais si c'est tout ce que vous faites, c'est vraiment exagéré.
Je voudrais juste ouvrir le fichier d'origine et un fichier temporaire; lire une ligne à la fois, et il suffit de vérifier chaque ligne de "ID2 :"; si vous le trouvez, écrire votre chaîne de remplacement pour le fichier temporaire, sinon, il suffit d'écrire ce que vous lisez. Lorsque vous avez plus d'une source, proche à la fois, de supprimer l'original, et renommer le fichier temporaire à l'original.
OriginalL'auteur David W
Quelque chose comme cela devrait fonctionner. C'est très simple, pas la plus efficace de la chose, mais pour les petits fichiers, il serait parfaitement:
OriginalL'auteur Steven Doggart
Vous pouvez utiliser des regex et de le faire en 3 lignes de code
Dans la regex, (?i)(?<=^id2\s*?:\s*?)\w*?(?=\s*?$) signifie, trouver quelque chose qui commence par id2 avec un nombre quelconque d'espaces avant et après
:
, et remplacer la chaîne suivante (alpha numérique de caractère, à l'exclusion des signes de ponctuation) tout le chemin jusqu'à la fin de la ligne. Si vous souhaitez inclure des signes de ponctuation, puis remplacez \w*? avec .*?OriginalL'auteur Jason
Vous pouvez utiliser regexes pour atteindre cet objectif.
OriginalL'auteur J0HN