Я провожу кодированный тест пользовательского интерфейса для веб-сайта, который отображает данные по разделам:
Например:
Раздел 1: отображает ссылку 1, ссылку 2, ссылку 3
Раздел 2: отображает ссылку 3, ссылку 5, ссылку 6
Я хочу убедиться, что веб-сайт правильно отображает данные, как указано выше, поэтому я решил добавить исходные данные в файл csv в формате, как показано ниже: (примечание: это всего лишь пример, содержимое каждой ссылки отличается от других)
Раздел 1, ссылка 1
Раздел 1, ссылка 2
Раздел 1, ссылка 3
Раздел 2, ссылка 4
Раздел 2, ссылка 5
Раздел 3, ссылка 6
Затем я загружаю данные из файла csv в datatable и сравниваю каждую строку в datatable с реальными данными на веб-сайте.
Это отлично работает, пока я не обнаружил, что некоторые ссылки содержат некоторую динамическую дату (некоторые содержат сегодняшнюю дату, некоторые содержат предыдущую дату, они часто меняются)
Я думал о решении, которое добавляет некоторые переменные в файл csv и вставляет в него дату.
Например, я добавляю переменные в csv, как показано ниже:
Раздел 1, ссылка 1 {0}
Раздел 1, ссылка 2 {1}
Раздел 1, ссылка 3 {2}
Раздел 2, ссылка 4
Раздел 2, ссылка 5
Раздел 3, ссылка 6
И замените их настоящей датой, но я не знаю как.
Ниже кода, который я использую для загрузки данных из файла csv в datatable:
public System.Data.DataTable ConvertCSVtoDataTable(string pathFile)
{
System.Data.DataTable dt = new System.Data.DataTable();
using (StreamReader sr = new StreamReader(pathFile))
{
string[] headers = sr.ReadLine().Split(',');
foreach (string header in headers)
{
dt.Columns.Add(header);
}
while (!sr.EndOfStream)
{
string[] rows = sr.ReadLine().Split(',');
System.Data.DataRow dr = dt.NewRow();
for (int i = 0; i < headers.Length; i++)
{
dr[i] = rows[i];
}
if (rows.Length != headers.Length)
{
for (int i = headers.Length; i < rows.Length; i++)
{
dr[headers.Length - 1] = dr[headers.Length - 1] + "," + rows[i];
}
}
dt.Rows.Add(dr);
}
}
return dt;
}
DataTable table = ConvertCSVtoDataTable(projectPath);
Пожалуйста, помогите мне в этом. Спасибо
Спасибо, @AdrianHHH, я изменил свой вопрос. у тебя есть какое-нибудь решение?
вы уже динамически добавляете строки и столбцы. нет большой разницы между добавлением текстового столбца или столбца даты.
Не могли бы вы конкретизировать это? Я хочу добавить динамические данные в конец текста в столбце, как в примере выше. Что-то вроде использования String.Format ("это тест {0}, 01.08.2018) => выход должен быть «Это тест 01.08.218»
Мой первый комментарий выше спросил "какую дату вы хотите вставить?" Вы не ответили на этот вопрос, и я думаю, что это ваша проблема. Вы хотите вставить дату, но не знаете, что это за дата. Когда вы объясните, какую дату нужно вставить, вам будет легче ответить на ваш вопрос. Во-вторых, в какой столбец или столбцы вы хотите добавить дату? Как выбрать столбцы, в которые должна быть добавлена дата?
Привет @AdrianHHH, думаю, дата не важна. Например, я хочу добавить сегодняшний день в строку 1, столбец 3 в конце текстовой строки и добавить предыдущий день в строку 2, столбец 3 в конце текстовой строки (см. Пример). Ваш вопрос "Как выбрать столбцы, в которые должна быть добавлена дата?" на самом деле проблема, с которой я столкнулся. Я не знаю, как добавить дату (или несколько текстов) в строку и столбец, которые я хочу добавить. Спасибо
Я очень старался понять ваш вопрос и заставить вас объяснить, что вы хотите. Я не могу больше помочь, пока вы не приложите реальных усилий, чтобы написать четкий вопрос.
Привет @AdrianHHH, переписываю вопрос. Пожалуйста, помогите мне просмотреть и дайте мне знать, где вам непонятно, чтобы я мог объяснить больше. Спасибо





Вы можете изменить цикл, содержащий dr[i] = rows[i];, на.
int drIndex = 0;
for (int i = 0; i < headers.Length; i++)
{
dr[drIndex] = rows[i];
drIndex++;
if (i == indexForInsertingTheDate)
{
dr[drIndex] = theDateToBeInserted;
drIndex++;
}
}
В качестве альтернативы вы можете изменить тело цикла с простого dr[i] = rows[i]; на:
string field = rows[i];
if (field.StartsWith("this is test "))
{
field += theDateToBeInserted;
}
dr[i] = field;
В вопросе не указано, какую дату использовать. Если нужна сегодняшняя дата, вы можете установить theDateToBeInserted на DateTime.Now.ToString("mm/dd/yyyy").
Спасибо @AdrianHHH за ответ, на самом деле, я использую метод ConvertCSVtoDataTable для преобразования некоторых файлов csv, и некоторым из них не нужно вставлять дату. И также текст не начинается с «это тест», это просто пример. Есть ли способ изменить данные после преобразования в Datatable. Спасибо
@ user1710727, отредактируйте свой вопрос, чтобы показать, чего вы действительно хотите. Похоже, вам просто нужно написать какой-то простой код, но ваш вопрос совсем не ясен относительно того, что у вас есть, чего вы хотите, что вы пробовали и почему это не сработало.
Хорошо @AdrianHHH, я редактировал вопрос. Пожалуйста, посмотрите, есть ли у вас время. Спасибо
Какую дату вы хотите вставить? Сегодня? Вчера? Десять дней с сегодняшнего дня? На каком языке вы используете свои закодированные тесты пользовательского интерфейса? Куда вы хотите вставить дату? Пожалуйста, редактировать вопрос, чтобы включить более подробную информацию о том, что вы хотите сделать и что вы пробовали.