1. C# / Говнокод #12700

    +137

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    private static string SimplifyPath(string path)
    {
    	var dirs = path.Split("\\".ToCharArray());
    
    	var absolutePath = new List<string>();
    	foreach (var dir in dirs)
    	{
    		if (dir == "..")
    		{
    			absolutePath.RemoveAt(absolutePath.Count - 1);
    			continue;
    		}
    		absolutePath.Add(dir);
    	}
    
    	var result = string.Empty;
    
    	for (int i = 0; i < absolutePath.Count - 1; ++i)
    	{
    		result += absolutePath[i];
    		result += "\\";
    	}
    
    	result += absolutePath[absolutePath.Count - 1];
    
    	return result;
    }

    Path.GetFullPath? Нет, мы не ищем легких путей.

    Запостил: Cpp, 07 Марта 2013

    Комментарии (7) RSS

    • ".."
      Ответить
    • А нафига вообще нужна нижняя часть? Почему сразу ту же строку не заюзать???
      Ответить
      • > А нафига вообще нужна нижняя часть?
        Так 16-24 это ж велосипедный String.Join.

        > ту же строку
        path? Так в нем же лишние куски, ради удаления которых всё это и затевалась.
        Ответить
    • > ту же строку
      Да нет, я имел в виду что-то вроде result += dir + "\\"; внутри цикла вместо блока 16-24.
      Ответить
      • А как тогда откатываться назад, если попалось ".."? Отщеплять от result кусок после последнего бекслеша? Имхо будет еще большее говно чем этот массив.
        Ответить
    • А RegExp уже отменили?
      Ответить
    • WinApi для болотных чертенят; Не надо учить, нахуй.
      Ответить

    Добавить комментарий