Вы могли бы сделать Integer.of(1).equals(foo)
, но это немного глупо. Зачем сохранять одну строку? Я бы просто поместил его в одну и ту же цепочку if/else-if
(и если это станет длинным, рассмотрим switch/case
(что также не является нулевым).
if (foo == null)
else if (foo == 1)
else if (foo == 2)
Также обратите внимание, что сравнение объекты с ==
немного сложнее из-за того, как автобокс работает (или не работает). Я думаю , что это работает в этом случае, но я не хочу думать об этом тоже сложно, поэтому в моем коде я обычно опускаюсь до int
(после нулевой проверки), чтобы быть в безопасности.
не используйте фиксированный и ужасно сложный regex как это для соответствия для известных доменных имен.
Список TLDs не статичен, особенно с рассмотрением ICANN оптимизированного процесса для нового gTLDs. Даже список ccTLDs иногда изменяется!
Взгляните на список, доступный из http://publicsuffix.org/, и напишите некоторый код, это может загрузить и проанализировать тот список вместо этого.
Можно создать regex как строку и затем сделать Regexp.new (строка).
Хорошо, поскольку у Вас есть он записанный, часть TLD эквивалентна, но длиннее, чем (\.<tldpart>){1,2}
но я уверен, что это могло быть зафиксировано для дублирования...
править: yech, нет, это было бы возможно, но по существу очень медленный список грубой силы для обработки дублирований я думаю. Более простой и быстрее, чтобы поместить возможный TLD и пар SLD+country в большом hashmap и проверить подстроку по этому.
Я рекомендовал бы запуститься с правил, размеченных в RFC 1035 и затем работать назад - но только если действительно действительно действительно необходимо сделать это с нуля. Домен regex шаблон должен быть (спорная секунда только на адрес электронной почты regex шаблоны) наиболее распространенной вещью там. Я проверил бы сайт regexlib.com и просмотрел бы то, что сделали другие люди.
Загрузите это: http://data.iana.org/TLD/tlds-alpha-by-domain.txt
Использование в качестве примера (в Python):
import re
def validate(domain):
valid_domains = [ line.upper().replace('.', '\.').strip()
for line in open('domains.txt')
if line[0] != '#' ]
r = re.compile(r'^[A-Z0-9\-]{2,63}\.(%s)$' % ('|'.join(valid_domains),))
return True if r.match(domain.upper()) else False
print validate('stackoverflow.com')
print validate('omnom.nom')
Можно учесть доменное здание списка из проверить функции для помощи производительности.
Я не знаю достаточно о доменных именах, вероятно. Но почему похож на домены подобранный "foo.info.com"? Кажется, что доменным именем является "info.com" в том особом случае.
И Вы могли бы хотеть удостовериться, что имя запускается с [a-z\d]. Я не думаю, что можно зарегистрировать домен, который запускается с тире?