如何向文本文件添加新的唯一字符串

时间:2014-09-14 06:01:29

标签: c# string text-files unique

我有一个包含多行文字的文本文件,例如像

cards
door
lounge
dog
window

我想在列表中添加一个新单词,条件是它不存在于列表中。例如,我想添加windcar

我使用File.ReadAllText(@"C:\Temp.txt").Contains(word) 但问题是window包含windcards包含car

有没有办法比较它?

4 个答案:

答案 0 :(得分:3)

如果您没有庞大的文件,可以将其读取到内存并像处理任何数组一样处理它:

var lines = File.ReadAllLines(@"C:\Temp.txt");
if(lines.Any(x=>x == word)
{
    //There is a word in the file
}
else
{
    //Thee is no word in the file
}

答案 1 :(得分:2)

使用File.ReadLine()并检查String.equals(),不要查找子字符串。像这样:

while(!reader.EndOfFile0
{
      if(String.Compare(reader.ReadLine(),inputString, true) == 0)
      {
            //do your stuf here
      }
}

答案 2 :(得分:0)

你应该通过正则表达式匹配,以便你匹配一个确切的工作,我在下面做了这个不区分大小写。

using ConsoleApplication3;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text.RegularExpressions;

public static class Program
{

    private static void Main(string[] args)
    {

        // Read the file and display it line by line.
        System.IO.StreamReader file =
           new System.IO.StreamReader("c:\\temp\\test.txt");
        var line = string.Empty;

        string fileData = file.ReadToEnd();
        file.Close();

        fileData = "newword".InsertSkip(fileData);

        StreamWriter fileWrite = new StreamWriter(@"C:\temp\test.txt", false);
        fileWrite.Write(fileData);
        fileWrite.Flush();
        fileWrite.Close();

    }

    public static string InsertSkip(this string word, string data)
    {
        var regMatch = @"\b(" + word + @")\b";
        Match result = Regex.Match(data, regMatch, RegexOptions.Singleline | RegexOptions.IgnoreCase);
        if (result == null || result.Length == 0)
        {
            data += Environment.NewLine + word;
        }
        return data;
    }
}

虽然我正在阅读整个文件并将整个文件写回来。只需再写一个单词而不是整个文件,就可以提高性能。

答案 3 :(得分:0)

你可以做点什么

string newWord = "your new word";
string textFile = System.IO.File.ReadAllText("text file full path");
if (!textFile.Contains(newWord))
{ 
    textFile = textFile + newWord;
    System.IO.File.WriteAllText("text file full path",textFile);
}