Редактировать конкретное слово в конкретной строке
Я знаю, что об этом спрашивали несколько раз, но мне нужен быстрый способ сделать это в файлах с различным размером (маленькие и большие файлы).
Мне нужно отредактировать масштабный коэффициент в файле Sat(TXT). Это первое число в третьей строке:
700 104 1 0 16 Autodesk AutoCAD 19 ASM 221.0.0.1871 NT 24 Вт.
16 августа 09:02:14 2016
1000 9.9999999999999995e-007 1e-010
2 ответа
Я предлагаю извлечь метод и Linq:
private static String MyEditLine(string value) {
var items = value.Split(new char[] { ' ' }, 2);
items[0] = "2000"; // let's change 1000 into 2000
return string.Join(" ", items);
}
...
var target = File
.ReadLines(@"C:\MyFile.txt")
.Select((line, index) => index != 2
? line
: MyEditLine(line))
.ToList();
File.WriteAllLines(@"C:\MyFile.txt", target);
Предположим, что вы прочитали свой файл и получите String[]
называется file
и число, которое вы хотите изменить, представляется как float
,
Чем вы можете использовать следующий код, чтобы сначала извлечь строку, которую вы хотите. После этого вы получите номер через float.TryParse(..)
int lineWithParam = 3;
String[] splittedLine = (file[lineWithParam-1]).Split(new char[] { ' ' }, 2);
if(splittedLine.Length == 2)
{
float fact = 0.0f;
String newFact = splittedLine[0];
// or how ever you want to modify your factor
if(float.TryParse(splittedLine[0], out fact))
{
newFact = "" + (fact * 12.3f);
}
file[lineWithParam-1] = newFact + " " + splittedLine[1];
}
Вот исполняемый пример: https://dotnetfiddle.net/NVgETo
после этого вы можете написать String[] file
вернуться к настоящему файлу.
Примечание: это не изменит file
, если в данной строке первый параметр недопустим float
!