public class StringMatcher {
// Gelen string "true" ise doğru döndürür
public boolean isTrue(String s) {
return s.matches("true");
}
// Gelen string "true" yada "True" ise doğru döndürür
// Çünkü ilk karakter [tT] şeklinde yazılmış. Yani küçük t veya büyük T den
// birini seçecek
public boolean isTrueVersion2(String s) {
return s.matches("[tT]rue");
}
// Gelen string "true", "True", "yes" yada "Yes" ise doğru döndürür
// | işareti ile iki seçenek sunulmuş ya sol taraf eşleşecek, ya sağ taraf
// sol taraf eşleşir ise ilk harfi ya t ya da T olmak zorunda
// eğer ikinci taraf eşleşir ise ilk harf ya y yada Y olmaz zorunda.
public boolean isTrueOrYes(String s) {
return s.matches("[tT]rue|[yY]es");
}
// Eğer gelen stringin içerisinde "true" geçiyorsa doğru döndürür. Çünkü
// "true" ifadesinden öncde . kullanılmış. Bu herhangi bir karakter demek
// noktadan sonra gelen * ile bu karakterlerden istediği kadar olabilir
// demek. Aynı yapı sonda da mevcut
public boolean containsTrue(String s) {
return s.matches(".*true.*");
}
// Eğer gelen string 3 tane küçük veya büyük harf içeriyorsa doğru döner.
// Gelen string 3 karakter olmalı ve a-z yada A-Z içermeli, başka bir
// karakter olursa false döner
// Bu yapıya alternatif şu şekilde de yazılabilir.
// return s.matches("[a-Z][a-Z][a-Z]");
public boolean isThreeLetters(String s) {
return s.matches("[a-zA-Z]{3}");
}
// Returns true if the string does not have a number at the beginning
// ^ karakteri stringin başından bahsettiğimiz anlamına geliyor. Arkasından
// [^\\d] rakam olmayacağı anlamına geliyor. Daha sonraki .* ile istediği
// kadar karakter gelebilir. Bu da demek oluyor ki bizim stringimizin
// başında bir tane rakamdan oluşan karakter bulunmayacak.
public boolean isNoNumberAtBeginning(String s) {
return s.matches("^[^\\d].*");
}
// Burada bulunan yapı [ab]|[cd] ya sol taraf ya sağ taraf seçilecek
// anlamına gelmektedir. Sol taraf seçilirse a veya b olacak, sağ taraf
// seçilirse d veya e olacak. Sonunda ise bu yapı ()* içerisine alındığı
// için bu koşulu sağlayan istediği kadar tekrar edebilir anlamına
// gelmektedir. yani "abacdacd" bu metodda true döner
public boolean isIntersection(String s) {
return s.matches("([ab]|[cd])*");
}
// Bu yapıda kalıbımız ya asd ile başlayıp devam edecek yada a ile
// başlamadan herhangi bir karakter ve arkasından d karakteri gelecek ve
// devamında 3 tane karakter gelebilir. Bu bu düzen genel parantez içinde
// olduğundan istediği kadar devam edebilir.
public boolean isSpecial(String s) {
return s.matches("(asd.*|[^a]d.{3})*");
}
// Eğer gelen sayı 300 den küçükse true döner
// İlk olarak [^0-9]* yapısı ile sayı haricinde istediği kadar karakter
// gelebilir. sonrasında [12]? ile 1 veya 2 ya olacak ya hiç olmayacak.
// Sonrasında [0-9]{1,2} yapısı ile en az bir en fazla iki rakam gelecek.
// Sonunda ise [^0-9]* yapısı ile rakam harici karakterler istediği kadar
// gelebilir.
public boolean isLessThenThreeHundret(String s) {
return s.matches("[^0-9]*[12]?[0-9]{1,2}[^0-9]*");
}
}
// Gelen string "true" ise doğru döndürür
public boolean isTrue(String s) {
return s.matches("true");
}
// Gelen string "true" yada "True" ise doğru döndürür
// Çünkü ilk karakter [tT] şeklinde yazılmış. Yani küçük t veya büyük T den
// birini seçecek
public boolean isTrueVersion2(String s) {
return s.matches("[tT]rue");
}
// Gelen string "true", "True", "yes" yada "Yes" ise doğru döndürür
// | işareti ile iki seçenek sunulmuş ya sol taraf eşleşecek, ya sağ taraf
// sol taraf eşleşir ise ilk harfi ya t ya da T olmak zorunda
// eğer ikinci taraf eşleşir ise ilk harf ya y yada Y olmaz zorunda.
public boolean isTrueOrYes(String s) {
return s.matches("[tT]rue|[yY]es");
}
// Eğer gelen stringin içerisinde "true" geçiyorsa doğru döndürür. Çünkü
// "true" ifadesinden öncde . kullanılmış. Bu herhangi bir karakter demek
// noktadan sonra gelen * ile bu karakterlerden istediği kadar olabilir
// demek. Aynı yapı sonda da mevcut
public boolean containsTrue(String s) {
return s.matches(".*true.*");
}
// Eğer gelen string 3 tane küçük veya büyük harf içeriyorsa doğru döner.
// Gelen string 3 karakter olmalı ve a-z yada A-Z içermeli, başka bir
// karakter olursa false döner
// Bu yapıya alternatif şu şekilde de yazılabilir.
// return s.matches("[a-Z][a-Z][a-Z]");
public boolean isThreeLetters(String s) {
return s.matches("[a-zA-Z]{3}");
}
// Returns true if the string does not have a number at the beginning
// ^ karakteri stringin başından bahsettiğimiz anlamına geliyor. Arkasından
// [^\\d] rakam olmayacağı anlamına geliyor. Daha sonraki .* ile istediği
// kadar karakter gelebilir. Bu da demek oluyor ki bizim stringimizin
// başında bir tane rakamdan oluşan karakter bulunmayacak.
public boolean isNoNumberAtBeginning(String s) {
return s.matches("^[^\\d].*");
}
// Burada bulunan yapı [ab]|[cd] ya sol taraf ya sağ taraf seçilecek
// anlamına gelmektedir. Sol taraf seçilirse a veya b olacak, sağ taraf
// seçilirse d veya e olacak. Sonunda ise bu yapı ()* içerisine alındığı
// için bu koşulu sağlayan istediği kadar tekrar edebilir anlamına
// gelmektedir. yani "abacdacd" bu metodda true döner
public boolean isIntersection(String s) {
return s.matches("([ab]|[cd])*");
}
// Bu yapıda kalıbımız ya asd ile başlayıp devam edecek yada a ile
// başlamadan herhangi bir karakter ve arkasından d karakteri gelecek ve
// devamında 3 tane karakter gelebilir. Bu bu düzen genel parantez içinde
// olduğundan istediği kadar devam edebilir.
public boolean isSpecial(String s) {
return s.matches("(asd.*|[^a]d.{3})*");
}
// Eğer gelen sayı 300 den küçükse true döner
// İlk olarak [^0-9]* yapısı ile sayı haricinde istediği kadar karakter
// gelebilir. sonrasında [12]? ile 1 veya 2 ya olacak ya hiç olmayacak.
// Sonrasında [0-9]{1,2} yapısı ile en az bir en fazla iki rakam gelecek.
// Sonunda ise [^0-9]* yapısı ile rakam harici karakterler istediği kadar
// gelebilir.
public boolean isLessThenThreeHundret(String s) {
return s.matches("[^0-9]*[12]?[0-9]{1,2}[^0-9]*");
}
}
Comments
Post a Comment