Merhaba.
Bu yazımda sizlere java dilinde normalde onlarca satır kod yazarak çözebileceğiniz iki basit string parse yöntemi göstereceğim.

Bunlardan ilki, bir string içerisinde yan yana birden fazla geçen karakteri teke düşürmek için kullanılan bir yapı. Hemen aşağıdaki koda baktığımızda;

Gördüğünüz üzere test isimli bir string değişkenimiz var ve kelimeler arasında rastgele birden fazla boşluk karakteri kullanılmış. replaceAll methoduna baktığımızda ise iki ayrı parametre aldığını görüyoruz. İlk parametredeki boşluk, hangi karakter için bu işlemi yapacağımızı gösteriyor. Hemen ardından gelen + karakteri ise solundaki boşluk karakterinden yine solundaki karakter uzunluğundan fazla geldiği sürece bu işlemi yapacağımızı belirtmekte. İkinci parametredeki boşluk karakteri ise bulduğumuz substringleri neyle değiştireceğimizi gösteriyor. Kodu compile ettiğimizde ise aşağıdaki gibi bir sonuçla karşılaşıyoruz;

Before: Lorem    ipsum        dolor   sit               amet,      consectetur        adipiscing        elit.
After: Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Gördüğünüz gibi kod, string içerisinde yan yana birden fazla sayıda olan boşluk karakterlerini bulup yerlerine tek bir boşluk ekledi ve stringimiz düzenli bir hale büründü.


Bahsetmek istediğim ikinci kod parçacığı ise web sitelerini herhangi bir API olmasa dahi kolay bir şekilde parse etmemizi sağlayabilecek bir kod. Bu kod parçacığı, bir string içerisinde iki sabit substring arasında geçen tüm alt stringleri çekebilmemizi sağlıyor. Böylece bir web sitesini kolayca parse edip kodumuzda kullanabiliyoruz. Daha anlaşılır olması için basit bir html kodu yazalım ve bunu parse etmeye çalışalım.

Aşağıda gördüğünüz üzere basit bir html kodu var. Ben ise bu kod içerisinde <li> ve </li> tagları arasındaki stringleri almak istiyorum.
Bu durumda yapmam gerekenler hemen aşağıda mevcut;

Görüldüğü üzere bir Pattern oluşturdum. Pattern içerisinde arasından almak istediğim taglar ve tagların arasında ise özel bir regex ifadesi yer alıyor. str değişkenim içerisinde ise yukarıda bahsettiğim html kodum bulunmakta.

str değişkenimi getTagValues() methoduma gönderdiğimde;

  • Öncelikle bulunacak substringleri içine ekleyeceğim bir string array oluşturuluyor.
  • Daha sonra bir Matcher oluşturuluyor ve Matcher’a, bakacağı string ve neye göre arama yapacağını bilmesi için oluşturduğumuz pattern veriliyor.
  • Hemen altında ise while döngüsüne giriliyor ve matcher bahsi geçen düzende bir substring bulduğu sürece bu stringi tagValues arrayinin içine ekleniyor.
  • En sonunda da array return ediliyor.

Kodun outputuna baktığımızda ise;

[Coffee, Tea, Milk]

outputunu görüyoruz.
Görüldüğü üzere taglar arasında geçen tüm substringler array içerisine eklenmiş durumda.

Anlatacaklarım bu kadar, buna benzer farklı ve kullanışlı kod parçacıkları bulduğum sürece bloguma eklemeye özen göstereceğim.
Görüşmek üzere…

CEVAP VER

Please enter your comment!
Please enter your name here