Замена элементов строк из файла по условию встречи элементов в нем - C#
Формулировка задачи:
Ест файл txt, содержащий числовую последовательность (числа разделены двойным пробелом, возможна запись в несколько строк). Файл всегда начинается или с 100 или с 200. Может заканчиваться любым числом.
Числа между 100 и 200 заменяются по первому правилу: 2 на "ромб", 3 на +, 12 на 56.
Числа между 200 и 100 заменяются по второму правилу: 2 на "Круг", 3 на -, 12 на 65.
Внутри последовательности от 100 до 200 может содержаться несколько 100 и наоборот. Суть в замене после 100 по определенному правилу, пока не появиться 200, что что является флагам для смены условий замены. Даже между 100 и 100 замена должна производиться.
Результат записываем в файл.
Есть похожая тема для одномерного массива:
Замена элементов массива по условию встречи элементов в нем
Но не смог перенести идею на строки.
Решение задачи: «Замена элементов строк из файла по условию встречи элементов в нем»
textual
Листинг программы
- static void Main(string[] args)
- {
- var ruleset = new Dictionary<int, Dictionary<int, int>>
- {
- [100] = new Dictionary<int, int>
- {
- [2] = 999,
- [3] = 9999,
- [12] = 56
- },
- [200] = new Dictionary<int, int>
- {
- [12] = 65
- }
- };
- string file = File.ReadAllText("1.txt");
- int[] arr = file.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries).Select(n => int.Parse(n)).ToArray();
- int current = 0;
- for (int i = 0; i < arr.Length; i++)
- {
- int num = arr[i];
- if (num == 100 || num == 200)
- current = num;
- else if (ruleset[current].TryGetValue(num, out num))
- arr[i] = num;
- using (StreamWriter sw = File.CreateText("1.txt"))
- {
- sw.WriteLine(String.Join(" ", arr));
- }
- }
- File1(true);
- }
- private static void File1(bool args)
- {
- string str = string.Empty;
- using (System.IO.StreamReader reader = System.IO.File.OpenText("1.txt"))
- {
- str = reader.ReadToEnd();
- }
- str = str.Replace(" 2 ", "ромб ");
- str = str.Replace(" 3 ", "- ");
- str = str.Replace(" 999 ", "круг");
- str = str.Replace(" 9999 ", "+ ");
- using (System.IO.StreamWriter file = new System.IO.StreamWriter("1.txt"))
- {
- file.Write(str);
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д