Запись переменной на C# с использованием условия если

littleKongo

Client
Регистрация
17.01.2015
Сообщения
244
Благодарностей
24
Баллы
18
Добрый вечер, зенномейкеры!

Прошу помочь с решением задачи на С-шарпе, так как делать 100 экшенов - это перебор)

Выполенние проекта начинается с парсинга переменной 1 и перменной 2. Они всегда есть на странице

Переменная 1 - определяет название файлы, куда будет записана переменная 2 (принимает более 90 значений)
Переменная 2 - ее необходимо за каждое выполнение записовать в Фаил txt.
Сам Фаил txt, в который записывается переменная 2, зависит от значения 1 и по совему именни совпадает чаще всего с значением переменной 1.


Есть 40 наиболее частых значений переменной 1 и соответсвенно есть 40 файлов txt в которые они записываются, для отсальных 50 значенний переменной 1 есть один фаил txt куда они должны записоваться

Подскажите пожалуйста как на С-шарпе будет выглядеть шабло записи в фаил txt по типу

Если переменная 1 = "мартышка" - записываем значение переменной 2 в фаил "мартышка.txt"
Если переменная 1 = "дерево" - записываем значение переменной 2 в фаил "дерево.txt"
Если переменная 1 = "сушка" - записываем значение переменной 2 в фаил "Другое.txt"
Если переменная 1 = все остальное - записываем значение переменной 2 в фаил "Другое.txt"


Проект выполняется много раз поэтому необходимо дописовать каждый раз в конец строки и разумеется с новой строки

Думал делать таблицей, но для дальнейшей обработки делать таблицей нельзя.

П.С: значение переменной2 бывает несколько строк
 

bhairava7

Client
Регистрация
18.08.2015
Сообщения
154
Благодарностей
15
Баллы
18
Добрый вечер, зенномейкеры!

Прошу помочь с решением задачи на С-шарпе, так как делать 100 экшенов - это перебор)

Выполенние проекта начинается с парсинга переменной 1 и перменной 2. Они всегда есть на странице

Переменная 1 - определяет название файлы, куда будет записана переменная 2 (принимает более 90 значений)
Переменная 2 - ее необходимо за каждое выполнение записовать в Фаил txt.
Сам Фаил txt, в который записывается переменная 2, зависит от значения 1 и по совему именни совпадает чаще всего с значением переменной 1.


Есть 40 наиболее частых значений переменной 1 и соответсвенно есть 40 файлов txt в которые они записываются, для отсальных 50 значенний переменной 1 есть один фаил txt куда они должны записоваться

Подскажите пожалуйста как на С-шарпе будет выглядеть шабло записи в фаил txt по типу

Если переменная 1 = "мартышка" - записываем значение переменной 2 в фаил "мартышка.txt"
Если переменная 1 = "дерево" - записываем значение переменной 2 в фаил "дерево.txt"
Если переменная 1 = "сушка" - записываем значение переменной 2 в фаил "Другое.txt"
Если переменная 1 = все остальное - записываем значение переменной 2 в фаил "Другое.txt"


Проект выполняется много раз поэтому необходимо дописовать каждый раз в конец строки и разумеется с новой строки

Думал делать таблицей, но для дальнейшей обработки делать таблицей нельзя.

П.С: значение переменной2 бывает несколько строк
C#:
string var1 = project.Variables["peremen1"].Value;
string var2 = project.Variables["peremen2"].Value;
string path = project.Directory + '\\';
bool appendNewLine = true;


switch(var1)
{
case "мартышка":
    FileSystem.FileAppendString(path + var1 + ".txt", var2, appendNewLine);
break;
       
case "дерево":
    FileSystem.FileAppendString(path + var1 + ".txt", var2, appendNewLine);
break;
       
default:
    FileSystem.FileAppendString(path + "Другое.txt", var2, appendNewLine);
break;
           
}

return var1;
 
  • Спасибо
Реакции: orka13

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 041
Баллы
113
это 40 case -ов ему строчить ), у него 40 текстовиков
Если все файлы находятся в одной папке или если ложить путь до файла в переменную то можешь так
C#:
string var1 = project.Variables["peremen1"].Value;
string var2 = project.Variables["peremen2"].Value;
bool appendNewLine =true;

string filePath = project.Directory + '\\';
string file = Path.GetFileNameWithoutExtension(filePath+var1+".txt");
if(!System.IO.File.Exists(filePath+file+".txt")){
    project.SendInfoToLog("", "Файл не найден, записываем в файл Другое", true);
    FileSystem.FileAppendString(filePath + "Другое.txt", var2, appendNewLine);
    return 1;
}
project.SendInfoToLog("", "Файл найден, записываем в файл "+file, true);
FileSystem.FileAppendString(filePath + var1 + ".txt", var2, appendNewLine);
return 2;
 
Последнее редактирование:
  • Спасибо
Реакции: CSS, zlodey и littleKongo

bhairava7

Client
Регистрация
18.08.2015
Сообщения
154
Благодарностей
15
Баллы
18
это 40 case -ов ему строчить ), у него 40 текстовиков
Если все файлы находятся в одной папке или если ложить путь до файла в переменную то можешь так
C#:
string var1 = project.Variables["peremen1"].Value;
string var2 = project.Variables["peremen2"].Value;

string filePath = project.Directory + '\\';
string file = Path.GetFileNameWithoutExtension(filePath+var1+".txt");
if(!System.IO.File.Exists(filePath+file+".txt")){
    project.SendInfoToLog("", "Файл не найден, записываем в файл Другое", true);
    FileSystem.FileAppendString(filePath + "Другое.txt", var2, appendNewLine);
    return 1;
}
project.SendInfoToLog("", "Файл найден, записываем в файл "+file, true);
FileSystem.FileAppendString(filePath + var1 + ".txt", var2, appendNewLine);
return 2;
Возможно я не правильно понял)
Если файлы изначально присутствуют, то мой пример не подходит, так как нет смысла в кейсах, проще получить список файлов и исходить из него, а если файлов изначально нет, но есть шаблон фильтров, по которым нужно формировать эти файлы, то кейсы вроде как раз подходят. Можно было и по-другому, конечно, сделать, завести массив этих фильтров, и динамически генерить кейсы из массива, правда не знаю, позволяет ли c# использовать динамические названия в кейсах)
Я подумал просто, что есть фильтры изначально, по которым нужно что-то отбирать и записывать в файл под названием этого фильтра.
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 041
Баллы
113
Возможно я не правильно понял)
Если файлы изначально присутствуют, то мой пример не подходит, так как нет смысла в кейсах, проще получить список файлов и исходить из него, а если файлов изначально нет, но есть шаблон фильтров, по которым нужно формировать эти файлы, то кейсы вроде как раз подходят. Можно было и по-другому, конечно, сделать, завести массив этих фильтров, и динамически генерить кейсы из массива, правда не знаю, позволяет ли c# использовать динамические названия в кейсах)
Я подумал просто, что есть фильтры изначально, по которым нужно что-то отбирать и записывать в файл под названием этого фильтра.
Честно сам раз пять перечитывал, и то не знаю правильно ли я понял))
 
  • Спасибо
Реакции: littleKongo

littleKongo

Client
Регистрация
17.01.2015
Сообщения
244
Благодарностей
24
Баллы
18
это 40 case -ов ему строчить ), у него 40 текстовиков
Если все файлы находятся в одной папке или если ложить путь до файла в переменную то можешь так
C#:
string var1 = project.Variables["peremen1"].Value;
string var2 = project.Variables["peremen2"].Value;

string filePath = project.Directory + '\\';
string file = Path.GetFileNameWithoutExtension(filePath+var1+".txt");
if(!System.IO.File.Exists(filePath+file+".txt")){
    project.SendInfoToLog("", "Файл не найден, записываем в файл Другое", true);
    FileSystem.FileAppendString(filePath + "Другое.txt", var2, appendNewLine);
    return 1;
}
project.SendInfoToLog("", "Файл найден, записываем в файл "+file, true);
FileSystem.FileAppendString(filePath + var1 + ".txt", var2, appendNewLine);
return 2;
А куда, в какую переменную путь ложить? У меня все 40 файлов в папке result хранятся, которая в папке проекта лежит
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 041
Баллы
113
значит никуда нинадо project.Directory - это путь к папке проекта
в переменной например "мартышка" , код по значению из переменной ищет текстовый файл в папке, если такой файл есть то запись в файл по значению переменной, если нет то в файл другое
 
  • Спасибо
Реакции: littleKongo

littleKongo

Client
Регистрация
17.01.2015
Сообщения
244
Благодарностей
24
Баллы
18
так а папку result где прописать
Папка "result" в "project.Directory"
 

littleKongo

Client
Регистрация
17.01.2015
Сообщения
244
Благодарностей
24
Баллы
18
Такую ошабку двойную выдает
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 041
Баллы
113
вот эту строку запиши вверху
bool appendNewLine =true;
 
  • Спасибо
Реакции: littleKongo

littleKongo

Client
Регистрация
17.01.2015
Сообщения
244
Благодарностей
24
Баллы
18

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 041
Баллы
113
никуда нинадо прописывать, у тебя в переменной окружении путь до этой папки если проект запускаешь из этой папки
можешь так прописать
string path = @"C\asdf\asdf\result\";
 
  • Спасибо
Реакции: littleKongo

littleKongo

Client
Регистрация
17.01.2015
Сообщения
244
Благодарностей
24
Баллы
18
никуда нинадо прописывать, у тебя в переменной окружении путь до этой папки если проект запускаешь из этой папки
Не совсем так. Сам проект находится в папке project.Directory а Папка "result" вложена в нее и получается что сам фаил проекта находится не в одной папке с 40 фаилами
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 041
Баллы
113
Не совсем так. Сам проект находится в папке project.Directory а Папка "result" вложена в нее и получается что сам фаил проекта находится не в одной папке с 40 фаилами
C#:
string var1 = project.Variables["peremen1"].Value;
string var2 = project.Variables["peremen2"].Value;
bool appendNewLine =true;
string filePath = @"C\asdf\asdf\result\";
string file = Path.GetFileNameWithoutExtension(filePath+var1+".txt");
if(!System.IO.File.Exists(filePath+file+".txt")){
    project.SendInfoToLog("", "Файл не найден, записываем в файл Другое", true);
    FileSystem.FileAppendString(filePath + "Другое.txt", var2, appendNewLine);
    return 1;
}
project.SendInfoToLog("", "Файл найден, записываем в файл "+file, true);
FileSystem.FileAppendString(filePath + var1 + ".txt", var2, appendNewLine);
return 2;
 
  • Спасибо
Реакции: CSS и littleKongo

littleKongo

Client
Регистрация
17.01.2015
Сообщения
244
Благодарностей
24
Баллы
18
А можно прописать путь как-то через переменную project.Directory?
Просто если переносить проект - каждый раз заново прописывать путь
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 041
Баллы
113
А можно прописать путь как-то через переменную project.Directory?
Просто если переносить проект - каждый раз заново прописывать путь
во входных настройках только, пропиши и задай переменную, в коде замени на переменную
 

littleKongo

Client
Регистрация
17.01.2015
Сообщения
244
Благодарностей
24
Баллы
18
  • Спасибо
Реакции: ssXXXss

ZennoScript

Moderator
Регистрация
04.03.2011
Сообщения
4 451
Благодарностей
1 885
Баллы
113

littleKongo

Client
Регистрация
17.01.2015
Сообщения
244
Благодарностей
24
Баллы
18

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 715
Баллы
113
:D

Или собака

string filePath = project.Directory + @"\result\";
 

CSS

Client
Регистрация
22.05.2010
Сообщения
1 327
Благодарностей
663
Баллы
113
C#:
string var1 = project.Variables["peremen1"].Value;
string var2 = project.Variables["peremen2"].Value;
bool appendNewLine =true;
string filePath = @"C\asdf\asdf\result\";
string file = Path.GetFileNameWithoutExtension(filePath+var1+".txt");
if(!System.IO.File.Exists(filePath+file+".txt")){
    project.SendInfoToLog("", "Файл не найден, записываем в файл Другое", true);
    FileSystem.FileAppendString(filePath + "Другое.txt", var2, appendNewLine);
    return 1;
}
project.SendInfoToLog("", "Файл найден, записываем в файл "+file, true);
FileSystem.FileAppendString(filePath + var1 + ".txt", var2, appendNewLine);
return 2;
Самый нормальный вариант, я что-то сколько не сталкиваюсь с разного рода задачами по C# - так ниразу и не понадобился этот свитч, при том чистота кода не страдала
 
  • Спасибо
Реакции: ssXXXss

littleKongo

Client
Регистрация
17.01.2015
Сообщения
244
Благодарностей
24
Баллы
18
Кстати, а с таким кодом корректно будет идти запись в фаилы в многопотоке ?
 

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 715
Баллы
113
не факт. для записи в многопотоке используйте списки и таблицы
 
  • Спасибо
Реакции: littleKongo

littleKongo

Client
Регистрация
17.01.2015
Сообщения
244
Благодарностей
24
Баллы
18

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 041
Баллы
113
40 списков заколбасить надо :D
на С# можно и одним обойтись если правильно перепривызывать, и можно вообще их не создавать, а так же програмно создать, просто заранее положить в список назвагния текстовых файлов которые должны быть
 

littleKongo

Client
Регистрация
17.01.2015
Сообщения
244
Благодарностей
24
Баллы
18
на С# можно и одним обойтись если правильно перепривызывать, и можно вообще их не создавать, а так же програмно создать, просто заранее положить в список назвагния текстовых файлов которые должны быть
Покажешь как сделать? Скину названия текстовых :-)
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 041
Баллы
113
нет )))))есть поиск, один пример показал
 

bhairava7

Client
Регистрация
18.08.2015
Сообщения
154
Благодарностей
15
Баллы
18
Покажешь как сделать? Скину названия текстовых :-)
Так смотрите, если есть заранее известны фильтры, то можно либо все их в кейсах прописать из моего примера, либо создать массив с этими фильтрами, а кейсы генерировать динамические из массива, тогда найденные результаты соответствующие этому фильтру будут складываться в файл с названием этого фильтра. Разве не это требуется?
Дайте свой список фильтров, запилю кесы под него)
 

littleKongo

Client
Регистрация
17.01.2015
Сообщения
244
Благодарностей
24
Баллы
18
Так смотрите, если есть заранее известны фильтры, то можно либо все их в кейсах прописать из моего примера, либо создать массив с этими фильтрами, а кейсы генерировать динамические из массива, тогда найденные результаты соответствующие этому фильтру будут складываться в файл с названием этого фильтра. Разве не это требуется?
Дайте свой список фильтров, запилю кесы под него)
При таком подходе многопоток будет корректно работать? Сейчас запустил в 3 потока и вроде работает, но кажется иногда делает лишние пробелы. Наверное тогда, когда хочет в один и тот же фаил записать одновременно с двух и более потоков
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 041
Баллы
113
При таком подходе многопоток будет корректно работать? Сейчас запустил в 3 потока и вроде работает, но кажется иногда делает лишние пробелы. Наверное тогда, когда хочет в один и тот же фаил записать одновременно с двух и более потоков
а ты уверен что он записать что то должен был, может в переменной2 была пустота вот и пустоту записал
 

Кто просматривает тему: (Всего: 11, Пользователи: 0, Гости: 11)