Как я читаю и редактирую .txt файл в C#?

Я соглашаюсь с Вами на Daitch-Mokotoff, Soundex смещается, потому что исходные американские счетчики хотели 'американизированные' имена.

, Возможно, пример на различии помог бы:

Soundex помещает дополнительное значение в запуск слова - на самом деле он только рассматривает первые 4 фонетических звука. Таким образом, в то время как "Schmidt" и "Smith" будут соответствовать "Smith", и "Wmith" не будет.

алгоритм Levenshtein был бы лучше для нахождения опечаток - один или два пропавших без вести или замененные буквы производят высокую корреляцию, в то время как фонетическое влияние тех, которые пропускают буквы, менее важно.

я не думаю, что любой лучше, и я рассмотрел бы и алгоритм расстояния и фонетический для помощи пользователям корректный введенный вход.

9
задан George Powell 2 September 2009 в 15:53
поделиться

9 ответов

Добавлен LINQ для удовольствия и прибыли (место для оптимизации;)):

System.IO.File.WriteAllLines(
    "outfilename.txt",
    System.IO.File.ReadAllLines("infilename.txt").Select(line =>
        "{" +
        string.Join(", ",
            line.Split(new string[] { " " }, StringSplitOptions.RemoveEmptyEntries)
        ) + "}"
    ).ToArray()
);
18
ответ дан 4 December 2019 в 06:02
поделиться

Примерно так: (НЕ ПРОВЕРЕНО)

string filename = @"c:\yourfilename.txt";
StringBuilder result = new StringBuilder();

            if (System.IO.File.Exists(filename))
            {
                using (StreamReader streamReader = new StreamReader(filename))
                {
                    String line;
                    while ((line = streamReader.ReadLine()) != null)
                    {
                        string newLine = String.Concat("{", line, "}", Environment.NewLine);
                        newLine = newLine.Replace(" ", ", ");
                        result.Append(newLine);
                    }
                }
            }

using (FileStream fileStream = new FileStream(filename , fileMode, fileAccess))
            {
                StreamWriter streamWriter = new StreamWriter(fileStream);
                streamWriter.Write(result);
                streamWriter.Close();
                fileStream.Close();
            }
13
ответ дан 4 December 2019 в 06:02
поделиться

вам следует сначала поработать над логикой, а не напрямую просить людей предоставить ее вам. что касается чтения / записи файла, вот вам:

//write      
FileStream fs = new FileStream("file_name", FileMode.Create);
StreamWriter w = new StreamWriter(fs, Encoding.UTF8);
w.WriteLine("text_to_write");
w.Flush();
w.Close();
fs.Close();

//read
fs = new FileStream("file_name", FileMode.Open);
StreamReader r = new StreamReader(fs, Encoding.UTF8);
Console.WriteLine(r.ReadLine());
r.Close();
fs.Close();
5
ответ дан 4 December 2019 в 06:02
поделиться

Прочтите каждую строку.

Добавьте скобку перед строкой и после

Затем замените пробел "" на "," (запятая и пробел)

3
ответ дан 4 December 2019 в 06:02
поделиться
string [] lines = File.ReadAllLines("input.txt");
var processed = lines.Select(line => string.Format("{{{0}}}", line.Replace(" ", ", ")));
File.WriteAllLines("output.txt",processed.ToArray());
3
ответ дан 4 December 2019 в 06:02
поделиться

отредактируйте, чтобы добавить способ изменения sLine. (не тестировалось, но я уверен, что все будет работать нормально)

    StreamReader sr = new StreamReader("path/to/file.txt");
    StreamWriter sw = new StreamWriter("path/to/outfile.txt");
    string sLine = sr.ReadLine();
    for (; sLine != null; sLine = sr.ReadLine() )
    {
        sLine = "{" + sLine.Replace(" ", ", ") + "}";
        sw.WriteLine(sLine);
    }
3
ответ дан 4 December 2019 в 06:02
поделиться
  1. Загрузить файл целиком
  2. использовать string.split ('\ n') для разделения содержимого на строки
  3. использовать string.replace ('', ',') для вставки запятыми.
  4. Сохраните файл.

Или, как сказал Вакасахмед, просто сделайте это по одной за строкой.

См. Также: http://www.csharphelp.com/archives/archive24.html

Кроме того, это подозрительно похоже на домашнее задание. Может, стоит поставить отметку "домашнее задание"?

1
ответ дан 4 December 2019 в 06:02
поделиться

В конце концов, я использовал второй файл, а не редактировал первый:

TextReader reader = new StreamReader("triangle.txt");
TextWriter writer = new StreamWriter("triangle2.txt");
for (; ; )
{
    string s = reader.ReadLine();
    if (s == null)
       break;
    s = s.Replace(" ", ", ");
    s = "{" + s + "},";
    writer.WriteLine(s);
}
1
ответ дан 4 December 2019 в 06:02
поделиться

Вам потребуется использовать класс FileStream для открытия файла, класс StreamReader для чтения из файла и класс StreamWriter для записи вернуться к файлу.

Вы можете создать FileStream следующим образом:

FileStream file = new FileStream("FileName", FileMode.Open, FileAccess.ReadWrite);

Затем оберните FileStream в StreamReader :

StreamReader reader = new StreamReader(file);

Затем прочтите каждую строку и выполните обработку строк (добавив запятые и скобки):

while(reader.EndOfFile)
{
   string currentLine = reader.ReadLine();
   // do your string processing here and save the result somewhere
}

Наконец, оберните FileStream в StreamWriter и запишите измененные строки обратно в файл:

StreamWriter writer = new StreamWriter(file);

// Write your content here
writer.Write("my content");

Не забудьте закрыть свои потоки после работы с ними.

reader.Close();
writer.Close();
file.Close();
3
ответ дан 4 December 2019 в 06:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: