Java'da String Metodları
Java'da String Metodları
String sınıfı Java'da metinler tanımlamak için kullanılır ve bize metinler üzerinde çeşitli işlemler gerçekleştirmemiz için yardımcı fonksiyonlar sunar. Java'da bir metin aşağıdaki gibi tanımlanabilir:
public class StringOrnek1
{
public static void main(String[] args)
{
// string tanımlanması
String myString = "Merhaba dunya";
}
}
Bu şekilde myString adında bir değişkene "Merhaba dunya" yazısını atamış oluyoruz.
Bu metinin uzunluğunu (karakter sayısını) merak edersek length metodunu çağırmamız gerekir:
public class StringOrnek2 {
public static void main(String[] args) {
// string tanımlanması
String myString = "Merhaba dunya";
System.out.println("Uzunluk " + myString.length());
}
}
Böylece tanımlanan değişkende kaç karakter olduğunu konsola yazdırmış olduk. Şimdi ise konsola sadece "dünya" kelimesinin yazılmasını sağlayalım:
public class StringOrnek3 {
public static void main(String[] args) {
// string tanımlanması
String myString = "Merhaba dunya";
System.out.println(myString.substring(8, myString.length()));
}
}
Eğer elimizdeki "Merhaba dunya" metnini bir dizi olarak düşünürsek harflerin dizinleri (index) aşağıdaki şekilde olacaktır:
m | e | r | h | a | b | a | d | ü | n | y | a |
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |
Sadece "dunya" kelimesini yazdırmamız için 8. karakterden başlayarak son karaktere kadar olan bölümü almamız gerekir. substring metodu başlangıç ve bitiş dizinleri arasında kalan karakterleri bir String olarak döndürür:
"Merhaba" kelimesi ise aşağıdaki şekilde görüntülenir:
public class StringOrnek4 {
public static void main(String[] args) {
// string tanımlanması
String myString = "Merhaba dunya";
System.out.println(myString.substring(0, 7));
}
}
Yukarıdaki örnekte 0 - 7 arasındaki (0 dahil 7 hariç) karakterler konsola yazılacaktır.
Bir harfin ya da String değerinin kaçıncı dizinden (index) itibaren başladığını merak ediyorsanız, indexOf metodunu kullanabilirsiniz. Örneğin "dunya" kelimesinin kaçıncı dizinde olduğunu öğrenmek için
public class StringOrnek5 {
public static void main(String[] args) {
// string tanımlanması
String myString = "Merhaba dunya";
System.out.println("Dunya baslangici " + myString.indexOf("dunya"));
}
}
NOT: indexOf metodu eğer aranan metni bulamazsa -1 döndürür. Bu şekilde metinler içinde arama yapabilirsiniz. (örneğin “ahmet.mail.com”.indexOf(“@”) == -1 ise eposta adresi yanlış girilmiştir gibi)
Bir metni başka bir metinle karşılaştırmak için equals ya da equalsIgnoreCase metodlarını kullanabilirsiniz. equalsIgnoreCase metodu, karşılaştırılan metni öncelikle küçük harflere çevirir ve ardından karşılaştırma yapar. Böylelikle büyük-küçük harf durumundan doğacak sorunun önüne geçilmiş olur.
public class StringOrnek6 {
public static void main(String[] args) {
// string tanımlanması
String myString = "Merhaba dünya";
if (myString.equalsIgnoreCase("merhaba dünya"))
System.out.println("Aynı deger");
}
}
Bir metni küçük harflere çevirmek için toLowerCase, büyük harflere çevirmek içinse toUpperCase metodlarını kullanabilirsiniz:
public class StringOrnek7 {
System.out.println("Kucuk harfler : " + myString.toLowerCase());
}
Bir metin içerisindeki boşluklardan kurtulmak için trim metodu kullanılır. trim metodu, metnin sonunda ve başında yer alan boşlukları yok ederken kelime aralarındaki boşluklara dokunmaz. Bu metod özellikle kullanıcıların formlar ile gönderdiği verilerde (isim, e-posta vs.) veritabanına kayıt etmeden önce kullanılmalıdır. Böylece olası kullanıcı hataları biraz olsun azaltılabilir ve ileride doğabilecek karşılaştırma hatalarının önüne geçilmiş olur.
public class StringOrnek8 {
public static void main(String[] args) {
// string tanımlanması
String myString = "Merhaba dunya";
myString = "Merhaba dunya ";
System.out.println("Bosluklar yok " + myString.trim());
}
}
Bir metni parçalara bölmek için (örneğin boşluklara göre ayırıp kelimeleri ayıklama) split metodu kullanılır. split metodu regex bir ifade içerisindeki kurallara göre String değişkenini böler ve bir String dizisi haline getirir.
public class StringOrnek9 {
public static void main(String[] args) {
// string tanımlanması
String myString = "Merhaba dunya";
String[] words = myString.split(" ");
}
}
Yukarıdaki örnekte "Merhaba dunya" metni boşluklara göre parçalanmış ve dizinin içerisinde "Merhaba" ve "dunya" değerini taşıyan iki adet String oluşturulmuştur. Bir metin değerini İnternet bağlantısı ya da başka bir akış (Stream) üzerinden yollamak istersek byte
değerine çevirmemiz gerekebilir. Bir String içerisindeki her harfin
byte değerini hesaplayıp String'i byte dizisine
çeviren metod getBytes metodudur.
public class StringOrnek10
{
public static void main(String[] args)
{
// string tanımlanması
String myString = "Merhaba dünya";
byte[] strByte = myString.getBytes();
System.out.println(new String(strByte));
}
}
Bir byte dizisi tekrar String'e dönüştürülmek istendiğinde String sınıfının yapıcılarından (Constructor) faydalanabiliriz.
String Metotlarıyla İlgili Örnek Java Programları
Örnek 1: equals
public class StringUyg1{
public static void main(String[] arg){
String st1="melisa";
if(st1.equals("melisa")) {
System.out.println("");
System.out.println("string melisa dir.");
}
if(st1.equals("MELISA")) {
System.out.println("");
System.out.println("string MELISA dir.");
}
if(st1.equalsIgnoreCase("MELISA")) {
System.out.println("");
System.out.println("string MELISA dir.");
}
}
}
Programın çıktısı:
AÇIKLAMA: Yukardaki programda bulunan 3 adet if’ten ilki ve üçüncüsü doğru, ikincisi ise yanlış olacaktır. Bu nedenle 2 mesaj alınır.
Örnek 2: length
public class StringUyg2 {
public static void main(String[] arg){
String st1="melisa";
int i;
for(i=0; i<=st1.length()-1; i++) {
System.out.println("");
System.out.println(st1.charAt(i));
}
}
}
Programın çıktısı:
AÇIKLAMA: Çıktıdan kolayca anlayacağımız üzere, bu program verilen bir String'i karakterlerine parçalayarak her karakteri bir satıra yazdırmaktadır. String'in uzunluğunu (kaç karakterden oluştuğunu) bulmak için length metodu kullanılır.
ÖRNEK 3: compareTo fonksiyonu
public class StringUyg3 {
public static void main(String[] arg){
String st1="melisa";
int i;
i=0;
i=st1.compareTo("zehra");
System.out.println(st1);
if(i==0) {
System.out.println("");
System.out.println(st1+" = "+"zehra");
}
if(i>0) {
System.out.println("");
System.out.println(st1+" > "+"zehra");
}
if(i<0) {
System.out.println("");
System.out.println(st1+" < "+"zehra");
}
System.out.println("i="+i);
}
}
Programın çıktısı:
AÇIKLAMA: Melisa sözcüğü alfabetik ortamda Zehra'dan önce gelir ve dolayısıyla daha küçük kabul edilir; bu nedenle i’nin sayısal değeri negatif bir tam sayı olarak atanmıştır.
ÖRNEK 4: compareTo fonksiyonu
public class StringUyg4 {
public static void main(String[] arg){
String st1="melisa";
int i;
i=0;
i=st1.compareTo("ayse");
System.out.println(st1);
if(i==0) {
System.out.println("");
System.out.println(st1+" = "+"ayse");
}
if(i>0) {
System.out.println("");
System.out.println(st1+" > "+"ayse");
}
if(i<0) {
System.out.println("");
System.out.println(st1+" < "+"ayse");
}
System.out.println("i="+i);
}
}
Programın çıktısı:
AÇIKLAMA: Melisa alfabetik olarak Ayse'den önce gelmediği için i’nin değeri pozitif bir sayı olarak çıkmıştır.
ÖRNEK 5: indexOf fonksiyon
public class StringUyg5 {
public static void main(String[] arg){
String st1="anadolu";
int i;
i=0;
System.out.println("KARAKTER"+" "+"INDEKSI");
for(i=0; i<=st1.length()-1; i++)
System.out.println(st1.charAt(i)
+" "
+i);
}
}
Programın çıktısı:
AÇIKLAMA: Programda, st1 String'i içindeki anadolu karakter dizisinin her harfi ve bu harfin karakter dizisi içindeki indisi birer satıra yazdırılmıştır.
ÖRNEK 6: getChars fonksiyonu
public class StringUyg6 {
public static void main(String[] arg){
String st1="anadolu";
char karDiz[];
karDiz=new char[7];
int i=0;
System.out.println("KARAKTER"+" "+"INDEKSI");
for(i=0; i<=st1.length()-1; i++) {
System.out.println(st1.charAt(i)
+" "
+i);
}
st1.getChars(3,7,karDiz,0);
System.out.println("Yeni dizi: ");
for(i=0; i<karDiz.length; i++)
System.out.println(karDiz[i]);
}
}
Progrmın çıktısı:
AÇIKLAMA: anadolu String'inin, indisi 3 olan d karakterinden, indisi 7-1=6 olan karakterine (u) kadar olan kısmı karDiz adlı diziye kopyalanmıştır. karDiz adlı dizinin içeriği “dolu” olarak atanmıştır.
ÖRNEK 7: startsWith ve endsWith fonksiyonları
public class StringUyg7 {
public static void main(String[] arg){
String st1[]={"ankara","antalya","burdur","bursa","anadolu"};
int i;
for (i=0; i<st1.length; i++) {
if(st1[i].startsWith("an")) {
System.out.println();
System.out.println(st1[i]+" stringi an harfleri ile basliyor");
}
}
System.out.println();
for (i=0; i<st1.length; i++) {
if(st1[i].endsWith("a")) {
System.out.println();
System.out.println(st1[i]+" stringi a harfi ile bitiyor");
}
}
System.out.println();
for (i=0; i<st1.length; i++) {
if(st1[i].startsWith("ka",2))
{
System.out.println();
System.out.println(st1[i]+" stringi 2. indisten itibaren ka harfleri ile basliyor");
}
}
}
}
Programın çıktısı:
AÇIKLAMA: Elemanları "ankara", "antalya", "burdur", "bursa", "anadolu" olan st1 adlı String dizisi oluşturulmuş, bu dizinin elemanları arasında “an” ile başlayanlar, ”a” ile bitenler ve 2 ile 3 indisli karakterleri “ka” olanlar listelenmiştir.
Yorumlar
Yorum Gönder