Бухгалтерия / Говнокод #28944 Ссылка на оригинал

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
  18. 18
  19. 19
  20. 20
  21. 21
  22. 22
  23. 23
  24. 24
  25. 25
  26. 26
  27. 27
  28. 28
Функция ЭтоVIN(Знач Значение, Знач ПробелыЗапрещены = Истина) Экспорт 
	
	Если ТипЗнч(Значение) <> Тип("Строка") Тогда
		Возврат Ложь;
	КонецЕсли;   
	
	Если Не ПробелыЗапрещены Тогда
		Значение = СтрЗаменить(Значение, " ", "");
	КонецЕсли;
	
	Возврат ЗначениеЗаполнено(Значение)
	И (СтрДлина(Значение) = 17)
	И 	
	// Если содержит только цифры, то в результате замен должна быть получена пустая строка.
	// Проверять при помощи ПустаяСтрока нельзя, так как в исходной строке могут быть пробельные символы.
	СтрДлина(  
	СтрЗаменить( СтрЗаменить( СтрЗаменить( СтрЗаменить(	СтрЗаменить(
	СтрЗаменить( СтрЗаменить( СтрЗаменить( СтрЗаменить( СтрЗаменить(
	СтрЗаменить( СтрЗаменить( СтрЗаменить( СтрЗаменить(	СтрЗаменить(
	СтрЗаменить( СтрЗаменить( СтрЗаменить( СтрЗаменить( СтрЗаменить(
	СтрЗаменить( СтрЗаменить( СтрЗаменить( СтрЗаменить( СтрЗаменить( 
	СтрЗаменить( СтрЗаменить( СтрЗаменить( СтрЗаменить( СтрЗаменить(
	СтрЗаменить( СтрЗаменить( СтрЗаменить( 
	Значение, "0", ""), "1", ""), "2", ""), "3", ""), "4", ""), "5", ""), "6", ""), "7", ""), "8", ""), "9", "")
	, "A", ""), "B", ""), "C", ""), "D", ""), "E", ""), "F", ""), "G", ""), "H", ""), "J", ""), "K", ""), "L", ""), "M", "")
	, "N", ""), "P", ""), "R", ""), "S", ""), "T", ""), "U", ""), "V", ""), "W", ""), "X", ""), "Y", ""), "Z", "")) = 0; 
	
КонецФункции

Функция определяет является ли строка VIN, метода выбрана забавная - в строке удаляются все допустимые символы, то что осталось, по мнению автора - мусор, т.е. vin невалидный. Видимо просто проверить каждый символ на вхождение в допустимый алфавит это слишком просто ;).

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

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

  • Винлайн заплатит — без вариантов
    Ответить
  • Представляю, как будет тормозить. Ведь каждый вызов СтрЗаменить ищет указанный символ в строке, а потом ещё удаление отнимает ресурсы.

    Хорошо, что строка короткая.
    Ответить
  • Достаточно было пройти по строке один раз, и завершить проход на первом неудачном символе. Вроде бы это задача по программированию для школьника
    Ответить
  • Напомнило:

    Роскомнадзор запретил букву А
    Роскомндзор зпретил букву Б
    Роскомндзор зпретил укву В
    Роскомндзор зпретил уку Г
    Роскомндзор зпретил уку Д
    Роскомнзор зпретил уку Е
    Роскомнзор зпртил уку Ё
    Роскомнзор зпртил уку Ж
    Роскомнзор зпртил уку З
    Роскомнор пртил уку И
    Роскомнор пртл уку Й
    Роскомнор пртл уку К
    Росомнор пртл уу Л
    Росомнор прт уу М
    Росонор прт уу Н
    Росоор прт уу О
    Рср прт уу П
    Рср рт уу Р
    с т уу С
    т уу Т
    уу У
    Ф
    Х
    Ц
    Ч
    Ш
    Щ
    Ъ
    Ы
    Ь
    Э
    Ю
    Я
    Ответить
  • Чуть допиленная (добавлен алфавит) функция из БСП - "СтроковыеФункцииКлиентСервер.ТолькоЦифр ыВСтроке"
    Ответить
    • У Windows 3.11 день рожденья,
      Ей сегодня тридцать лет.
      Я несу ей поздравленье
      И огромный розовый букет.

      А по ДОС вакансий нет?
      Ответить
  • Возврат СтрДлина(Значение) = 17 И НЕ СтрРазделить(Значение, "0123456789ABCDEFGHJKLMNPRSTUVWZYZ", Ложь).Количество();
    Ответить
    • Слушай, может пойдём лучше пивка попьём?
      Ответить
        • Пивка попить жигулёвского?
          Ответить
          • ага, соску пивасика втянем. У меня и семки есть
            Ответить

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

Переведи на "PHP", guest!

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


    8