Member 13846964 Ответов: 1

Как мы можем переименовать имя файла в представлении таблицы данных добавив префикс


Привет,

Нужно переименовать файл в представлении datagrid ,

старое имя файла test.txt и нужно добавить префикс как tes001test.txt и нужно увеличить число до 002 для следующего файла .

Что я уже пробовал:

int CheckBoxRowCounter = 0;
            for (int i = 0; i < dataGridView1.RowCount; i++) {
                if (Convert.ToBoolean(dataGridView1.Rows[i].Cells[0].Value)) {
                    CheckBoxRowCounter++;
                }
            }
            if (CheckBoxRowCounter > 0)
            {
                for (int i = 0; i < dataGridView1.RowCount; i++)
                {

                    if (Convert.ToBoolean(dataGridView1.Rows[i].Cells[0].Value))
                    {
                        string SourceFilePath = dataGridView1.Rows[i].Cells[1].Value.ToString();
                        string FileName = new System.IO.FileInfo(SourceFilePath).Name;
                        var prefix = Regex.Match(SourceFilePath, "^\\D+").Value;
                        var number = Regex.Replace(SourceFilePath, "^\\D+", "");
                        var r = int.Parse(number) + 1;
                        var newstring = prefix + r.ToString(new string('0', number.Length));
                    }
                }

1 Ответов

Рейтинг:
2

OriginalGriff

Во-первых, проверьте свое регулярное выражение: это не сработает:

^\D+
Соответствует числам в начале текста, и ваше описание не показывает этого: "tes001text.txt-совсем не соответствует твоему образцу.
^tes\D+
хотел бы, но ..... Метод Regex.Replace (String, String) (System.Text.RegularExpressions)[^] не возвращает "бит, который он удалил", поэтому ваша попытка разобрать число также обречена на неудачу, потому что вы специально удалили число из строки, которую пытаетесь разобрать!

Перестаньте гадать: прочтите о регулярных выражениях и получите копию Экспрессо[^] - это бесплатно, и он проверяет, тестирует и генерирует регулярные выражения.

Но... какого черта вы вообще пытаетесь разобрать число, когда вам, вероятно, нужно число из предыдущей строки, чтобы решить, какое число дать этому?