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.