Я использую StreamReader для чтения каждой строки файла CSV в строку. Когда я обрабатываю каждую строку, мне нужно удалить все запятые, которые ТОЛЬКО окружены другими числами.
Например, если строка была:
"textfield1", "textfield2", "100.00", "1,070.00"
Мне нужно было бы только убрать запятую из «1070,00» из всей этой строки, в результате чего:
"textfield1", "textfield2", "100.00", "1070.00"
Каждая строка, прочитанная из файла CSV, может отличаться количеством полей, длиной и т. д., поэтому мне нужно использовать что-то (может быть, регулярные выражения?), Которое просматривает всю строку без жесткого кодирования местоположения или полного удаления всех запятых.
Вот подход, который я пробовал:
StreamReader sr = new StreamReader(strInputFile);
string nextLine = sr.ReadLine();
try
{
while ((nextLine = sr.ReadLine()) != null)
{
string rawtext = nextLine.Replace("[0-9]"+","+"[0-9]" , "[0-9]"+"[0-9]");
// ....rest of code
}
}
Очевидно, это не работает, потому что я не понимаю, как это сделать :)
Я новичок в C# и неопытен в Regex, так что, надеюсь, это относительно просто.
"1,070.00"становится"[0-9][0-9]70.00", верно? просто чтобы убедиться, что мы собираемся ответить на правильный вопрос. - person Geeky Guy   schedule 26.06.2013"[0-9]" + "," + "[0-9]"таким образом. Вы можете написать одну строку:"[0-9],[0-9]". Однако даже если вы продолжите делать это так, как делаете, компилятор увидит, что это фиксированные строки, и сделает их одной строкой только в сборке. - person Geeky Guy   schedule 26.06.2013Decimal.TryParse? - person Conrad Frix   schedule 26.06.2013TextFieldParser: msdn.microsoft.com/en-us/library/ - person Jim Mischel   schedule 26.06.2013