2016-07-13 5 views
0

У меня есть немного другая проблема по сравнению с другими проблемами «редактирования текстового файла». Например, у меня есть следующий текстовый файл:Редактирование строк в текстовом файле с использованием C#

Cal Test 
{ 
    Feature 0.0 1.0 2.0 7.5 
    Feature 0.0 -1.0 2.0 -7.5 
    .etc 
} 

у меня есть около ста Feature строк в текстовом файле. По сути, цифры представляют собой точки данных; поэтому первые два числа представляют собой точку данных: (0.0, 1.0), а вторая пара представляет вторую точку данных: (2.0, 7.5); который представляет строку в другой программе, которая принимает текстовый файл.

Что я хочу сделать, поворачивает каждую точку данных на 90 градусов против часовой стрелки; что означает (a, b)(b, -a). Я знаю, как я могу это сделать, проходя через чтение строки за строкой и редактируя точки, я хотел бы знать, есть ли более эффективный способ обмена (a, b) и приложить отрицательный результат?

+0

Вы хотите повернуть всю функцию установить в строке? Итак, первый из них будет (1,0, -0,0, 7,5, -2,0)? – keyboardP

+0

Никакое количество микро-оптимизации не приведет к заметному улучшению производительности по сравнению с вашим предложением прочитать каждую строку, проанализировать ее и внести изменения прямо и просто. Если бы у вас было миллиард строк или даже миллион, может быть случай для какой-то оптимизации (которая, скорее всего, будет вращаться вокруг того, как вы управляете файловым IO и памятью). –

+0

@keyboardP Да, это правильно – John

ответ

0

Как сказал ранее, не большой шаг вперед, но

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

var list = new List<string>(); // or whatever structure you use to keep items in memory 

foreach(var line in File.ReadLines(anInFileStr)) 
{ 
    var lineArray = line.Split(' ') ; 
    list.Add(string.format("{0} {2} {1} {3}", lineArray[0], -int.Parse(lineArray[1]), lineArray[2], lineArray[3])); 
} 

File.WriteAllLines(anOutFile, list) 
Смежные вопросы