Поскольку вы сделали комментарий, что ,
является десятичным разделителем в вашей локали, есть лучший вариант, чем выполнить замену строки от .
до ,
;скажите методу Double.Parse()
использовать другой числовой формат.
См. документ MSDN для Parse (String s) .Особо обратите внимание на следующее:
Параметр s интерпретируется с использованием информации о форматировании в объекте NumberFormatInfo, который инициализируется для текущей культуры потоков . Длябольше информации, см. CurrentInfo.Чтобы проанализировать строку с использованием информации о форматировании какой-либо другой культуры, вызовите метод Double.Parse (String, IFormatProvider) или Double.Parse (String, NumberStyles, IFormatProvider).
Предполагая текущую культуру потокаиспользует числовой формат, который считает ,
десятичным разделителем (например, Франция / Франция fr-FR
), вы должны передать IFormatProvider
методу Parse()
, который определяет .
в качестве десятичного разделителя.Удобно, что культура «без культуры в частности», CultureInfo.InvariantCulture
, делает именно это.
Таким образом, этот код должен успешно проанализировать:
for (int i = 1; i < 7; i++)
{
// Assume the substring of ReadLine() contains "-.23455", for example
var item = Double.Parse(reader.ReadLine(44).Substring(8 * i, 8), CultureInfo.InvariantCulture);
richTextBox1.Text += item.ToString() + "\n";
}