Я соглашаюсь с Вами на Daitch-Mokotoff, Soundex смещается, потому что исходные американские счетчики хотели 'американизированные' имена.
, Возможно, пример на различии помог бы:
Soundex помещает дополнительное значение в запуск слова - на самом деле он только рассматривает первые 4 фонетических звука. Таким образом, в то время как "Schmidt" и "Smith" будут соответствовать "Smith", и "Wmith" не будет.
алгоритм Levenshtein был бы лучше для нахождения опечаток - один или два пропавших без вести или замененные буквы производят высокую корреляцию, в то время как фонетическое влияние тех, которые пропускают буквы, менее важно.
я не думаю, что любой лучше, и я рассмотрел бы и алгоритм расстояния и фонетический для помощи пользователям корректный введенный вход.
Добавлен LINQ для удовольствия и прибыли (место для оптимизации;)):
System.IO.File.WriteAllLines(
"outfilename.txt",
System.IO.File.ReadAllLines("infilename.txt").Select(line =>
"{" +
string.Join(", ",
line.Split(new string[] { " " }, StringSplitOptions.RemoveEmptyEntries)
) + "}"
).ToArray()
);
Примерно так: (НЕ ПРОВЕРЕНО)
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();
}
вам следует сначала поработать над логикой, а не напрямую просить людей предоставить ее вам. что касается чтения / записи файла, вот вам:
//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();
Прочтите каждую строку.
Добавьте скобку перед строкой и после
Затем замените пробел "" на "," (запятая и пробел)
string [] lines = File.ReadAllLines("input.txt");
var processed = lines.Select(line => string.Format("{{{0}}}", line.Replace(" ", ", ")));
File.WriteAllLines("output.txt",processed.ToArray());
отредактируйте, чтобы добавить способ изменения 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);
}
Или, как сказал Вакасахмед, просто сделайте это по одной за строкой.
См. Также: http://www.csharphelp.com/archives/archive24.html
Кроме того, это подозрительно похоже на домашнее задание. Может, стоит поставить отметку "домашнее задание"?
В конце концов, я использовал второй файл, а не редактировал первый:
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);
}
Вам потребуется использовать класс 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();