2016-04-04 23 views
0

Mutlak ve göreli URL'leri birbirinden ayıran bir Java yöntemi üzerinde çalışıyorum, bir tarayıcı adres çubuğunun katı bir URL ayrıştırıcısının yapma şeklinden ziyade. Yani, bir ana bilgisayarla başlıyorsa, bir URL'yi mutlak olarak tanımasını istiyorum. şemanın mevcut olup olmadığını. Bu şekilde, şemaya bağlı URL'leri (//example.com gibi) ve şema ile URL'leri (örneğin example.com, wikipedia.org, lots.and-lots.of.domains.com.ng gibi) doğru bir şekilde tanır. Yöntem, şu anda Temelde buBir mutlak web URL'sini bir şema olmadan bile tanıyın

public String checkPossiblyAbsolute(String url) { 
    if (url.matches("^(\\/\\/)?([-_A-Za-z0-9]+\\.)+\\w{2,3}(\\/.*)?$")) { 
     if (url.startsWith("//")) url = "http:" + url; 
     else url = "http://" + url; 
    } 
    return url; 
} 

benzeyen bir yapı kullanılarak,', bu nokta A-Z, a-z, 0-9, - ve son sıra (TLD) tam olarak 2 içeren _ burada karakter dizileri ayrı olarak kontrol eder veya 3 harf. Ayrıca, dize isteğe bağlı bir // ile başlayabilir. Testlerim beklediğim şekilde çalışır, ancak bunu yapmak için daha kolay (veya en azından okunabilir) bir yol bulmak isterim. Düşüncesi olan var mı?

cevap

0

Maalesef Java, kaçan şeylerden kaçınmanıza izin vermez. (Bazı diller @"une\scapedRegex"'a izin verir). Ancak, regex sözdiziminde yapabileceğiniz bazı değişiklikler vardır, ancak.

  • \\.

    [.] değil kısa ama IMHO daha okunabilir hale gelebilir.
  • \\/ ile aynıdır. [/] yapın.
  • Büyük/küçük harfe duyarlı mod kullanıyorsanız, A-Z'dan kurtulabilirsiniz. Sadece bir tane A-Z olduğunda buna değmez.

çok daha yapabileceğiniz, değişkenlerde şeyler koymak dışında bir şey yok. Yine de, birkaç tane fazla işiniz varsa buna değmeyebilir, ancak okunabilirliği artırabilir. Java kullanıyorsunuz, bu yüzden kod-golf kazanmıyorsunuz.

İlgili konular