Си диез / Говнокод #12320 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
public static string GetCommandLineParameter(string ParameterName)
    {
      ParameterName = ParameterName.ToLower();
      string ParameterIdentifikator = ParameterName.ToLower() + "=";
      
      string RetVal = null;
      foreach(string Arg in Environment.GetCommandLineArgs())
      {
        string ArgLower = Arg.ToLower();
        if(ArgLower.IndexOf(ParameterIdentifikator) == 0)
        {
          RetVal = Arg.Substring(ParameterIdentifikator.Length, Arg.Length - ParameterIdentifikator.Length);
          return RetVal;
        }
      }
      return RetVal;
    }

читаем параметры из командной строки

Запостил: taburetka taburetka, (Updated )

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

  • А в сишарпике разве нет какого-нибудь аналога getopt'а из коробки?

    Ну а так - вполне рабочий код, разве что немного переусложненный:
    public static string GetCommandLineParameter(string ParameterName)
    {
        string ParameterIdentifikator = ParameterName.ToLower() + "=";
        foreach(string Arg in Environment.GetCommandLineArgs()) {
            if(Arg.ToLower.StartsWith(ParameterIdentifikator)) {
                return Arg.Substring(ParameterIdentifikator.Length);
            }
        }
        return null;
    }
    Ответить
    • return Environment.
          GetCommandLineArgs().
          Single(s => s.ToLower().
          StartsWith(ParameterName.ToLower() + "=")).
          Skip(ParameterName.Length+1).
          AssParallel();

      Так параллельнее будет.
      Ответить
      • Не будет. AssParallel в таком случает нужно вызывать первым. Слив засчитан.
        Ответить
        • >AssParallel нужно вызывать первым
          Не нужно. В C# метода параллельной задницы даже не существует.
          Ответить
          • Видимо я не оценил вашего тонкого юмора и просто посмотрел на все это глазами разработчика, который увидел в коде одну опечатку и одну детскую логическую ошибку. Ну да ничего, вам простительно.
            Ответить
            • Просто вы тут явно новенький, но это ничего, свыкнетесь-освоитесь, со всеми говнами познакомитесь...
              Ответить
          • return Environment.
                GetCommandLineArgs().
                Single  (
                            s => s.StartsWith(ParameterName+"=", StringComparison.OrdinalIgnoreCase)
                        ).
                Skip(ParameterName.Length+1);
            Посоветуй, как правильно отформатировать?
            Ответить
            • Не знаю, как правильно, я бы, наверное, написал так:
              return Environment.GetCommandLineArgs()
                  .Single(s => s.StartsWith(ParameterName + "=", StringComparison.OrdinalIgnoreCase))
                  .Substr(ParameterName.Length + 1);
              Ответить
              • А не будет исклЬючение если там 2 или больше одинаковых параметра в этом случае?
                Ответить
                • "throws an exception if more than one such element exists."
                  Видимо, у LispGovno это специально, как простейшая обработка некорректной конфигурации. Можно было написать First или Last, тогда бы в таком случае бралось первое и последнее значение.
                  Ответить

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

Из-за тебя ушел bormand, guest!

    А не использовать ли нам bbcode?


    8