MadMyche
Если это что-то, что будет делаться на регулярной основе; или вы просто хотите построить свои знания, вы должны понять, что это не является обычный текст файл - это на самом деле очерченный текст.
Точки с запятой разбивают это на столбцы, и там определенно есть точка с запятой. заголовок строка в верхней части файла
City; Temp; location; Weather value;
Ryga; -3; C:\Users\abc\Desktop\Orai\Video\; overcast;
Tallinn; -2; C:\Users\abc\Desktop\Orai\Video\; overcast;
Moscow; -2; C:\Users\abc\Desktop\Orai\Video\; fog;
Minsk; +4; C:\Users\abc\Desktop\Orai\Video\; overcast;
Теперь, когда мы все это видим, мы действительно можем создать
Class
чтобы представить эти данные:
public class WeatherInfo {
public string City { get; set; }
public int Temperature { get; set; }
public string Location { get; set; }
public string Weather { get; set; }
}
Теперь мы знаем, что такое данные, и у нас есть класс для представления одной строки. Давайте посмотрим на чтение вашего файла...
Мы можем прочитать ваш файл с этим неполным кодом
string[] lines = File.ReadAllLines( filename );
for (int l=0; l <= lines.length - 1, l++) {
if (l > 0) { // we will skip the first line which is the header(0-indexed)
string row = lines[l];
string[] col = row.Split(','); // splitting this up on the semi-colon
// TODO: Process the columns- col[0], col[1], col[2], col[3]
}
}
Так что же нам теперь делать... и как это мне поможет?
Мы собираемся создать
List
(или другой тип сбора) сообщенных наблюдений, и когда мы проходим через каждую строку выше, мы можем добавить
объект к этому списку
List<WeatherInfo> WeatherReports = new List<WeatherInfo>();
// begin loop
WeatherInfo report = new WeatherInfo();
report.City = // value;
report.Temperature = // value
report.Location = // value
report.Weather = // value
WeatherReports.Add(report);
// end loop
Таким образом, мы получили отдельные куски этого..
Давайте объединим эти разделы, чтобы связать их все вместе!
string[] lines = File.ReadAllLines( filename );
List<WeatherInfo> WeatherReports = new List<WeatherInfo>();
for (int l=0; l <= lines.length - 1, l++) {
if (l > 0) {
string row = lines[l];
string[] col = row.Split(',');
WeatherInfo report = new WeatherInfo();
report.City = col[0];
report.Temperature = col[1];
report.Location = col[2];
report.Weather = col[3];
WeatherReports.Add(report);
}
}
И я до сих пор не ответил на твой вопрос.... ну, ты действительно не сказал мне, что заменить... Глядя на это я могу только догадываться что вы хотите изменить местоположение которое кажется немного
шаткий и, скорее всего, потребуется редактирование.
Если это будет ...
статическое значение во всех случаях вы можете просто изменить строку для
report.Temperature
.
Теперь, как я могу получить свой текстовый файл обратно... вы просто обращаете процесс вспять.
StringBuilder sb = new StringBuilder();
sb.AppendLine(lines[0]); // we can keep that header row as is
foreach(WeatherInfo wi in WeatherReports) {
sb.AppendLine("{0},{1},{2},{3}, wi.City, wi.Temperature, wi.Location, we.Weather);
}
string NewTextContent = sb.ToString();
Я надеюсь, что это поможет вам и покажет, как вы действительно можете перепроектировать простой запрос