Merhaba arkadaşlar serinin bu bölümünde JavaScript'de string veri türünü ve veri tipini inceleyeceğiz.
Yazıda:
-
String veri türüne ve veri tipine.
-
Numerik özellikli string değerlere.
-
String veri türünün matematiksel işlemlerde kullanılmasına.
-
(
\
) Escape karakterinin kullanılmasına. -
Object tipindeki string türlerine.
-
Sıkça kullanılan string metotlarına.
Değineceğim.
İyi okumalar dilerim.
Karakterlerden veya dizi karakterlerinden oluşan veri türlerine string adı verilir. String veri tipleri tırnak işaretleri arasında kullanılırlar. Tırnak işareti çift veya tek tırnak şeklinde olabilir.
String veri türü primitive özelliklidir ve immutable yapıdadırlar yani değiştirilemezler.
Örnek
%%javascript
// Çift tırnak işareti ile kullanımı
const car1 = "Lada";
// Tek tırnak işareti ile kullanımı
const car2 = `Opel`;
// Çift ve tek tırnak işaretleri birlikte kullanılabilirler.
let text1 = "Doktor `gel` dedi.";
let text2 = `Doktor "gel" dedi.`;
console.log(car1)
console.log(car2)
console.log(text1)
console.log(text2)
Lada
Opel
Doktor `gel` dedi.
Doktor "gel" dedi.
String veri türleri primitive özelliklidir ve immutable yapıdadırlar yani değiştirilemezler.
Örnek
%%javascript
let student = "Hasan";
/**
* person değişkeni için RAM'de yeni bir adres açılacaktır ve student değişkeninin
* değeri person değişkenine kopyalanacaktır.
*/
let person = student;
// Konsola Hasan ifadesi yazdırılacak.
console.log("Konsola " + person + " ifadesi yazdırılacak")
// student değişkeninin depoladığı veriyi değiştirdiğimizde yeni değer için bellekte yeni bir adres oluşturulacaktır.
student = "Murat"
// Konsola Murat ifadesi yazdırılır.
console.log("Konsola "+ student +" ifadesi yazdırılır.");
Konsola Hasan ifadesi yazdırılacak
Konsola Murat ifadesi yazdırılır.
Hatırlarsak object veri tipine sahip değişkenlerde bellekteki adres bulunup depoladığı değer güncelleniyordu.
Aynı örneği şimdi object veri tipine sahip veri türleri için yapalım.
Örnek
%%javascript
let student = { firstName: "Hasan", surName: "Taş" };
let person = student;
// person değişkeninin firstName key'i ile depolanan değere ulaşıp veriyi değiştiriyoruz.
person["firstName"] = "Murat";
// Konsola Murat ifadesi yazdırılacaktır.
console.log(person["firstName"]);
// ⚠️ student değişkenin de güncellendiğini ve konsola Murat ifadesi yazdırıldığına dikkat edin.
console.log(student.firstName)
Murat
Murat
String veri türleri rakamlardan oluşabilir. Bu durumdaki string'ler numerik özellikli string değerler olarak ifade edilir.
JavaScript'de expression'lar (ifadeler) soldan sağa şekilde değerlendirilir. Yani Javascript ifadenin nerede string olacağını bu pattern'e göre belirler.
Örnek
%%javascript
// + işareti ile string'ler birbirine ekleniyor.
// Konsola 71 yazdırılacaktır.
var x = 4 + 3 + "1";
console.log(x);
// Konsola 143 yazdırılacaktır.
var y = "1" + 4 + 3;
console.log(y);
// Konsola 8 yazdırılacaktır. ⚠️ Expression değerlendirilirken soldan sağa işlemin gerçekleştiğine dikkat edin.
var z = "9" - 4 + 3;
console.log(z);
let m = "Emin" + " " + "Altan";
// Çıktı Emin Altan olacaktır.
console.log(m);
71
143
8
Emin Altan
Örnek
%%javascript
/**
* Javascript string'in nerede başladığını ve bittiğini bilemediği için problemlere neden olacaktır.
* SyntaxError: Unexpected identifier 'Moğollar' ifadesi konsola yazdırılır.
*/
let text = "Biz onları "Moğollar" olarak çağırırdık."
console.log(text)
Unexpected identifier 'Moğollar'
Bu tarz sorunların önüne geçmek için backslash escape character1 kullanılır.
❗ \
karakterinin kullanılması tavsiye edilmez. Çünkü bazı browser'lar \
karakterini desteklemez.
Backslash escape character'leri listelersek:
Kod | Sonuç | Açıklama |
---|---|---|
\' |
' | Tek tırnak işareti |
\" |
" | Çift tırnak işareti |
\\ |
\ | Slash işareti |
Örnek
%%javascript
// Yukarıdaki örnek için backslash kullandığımızda sorun çözülür.
let text1 = "Biz onları \`Moğollar\` olarak çağırırdık.";
// Biz onları `Moğollar` olarak çağırırdık. ifadesi konsola yazılır.
console.log(text1);
let text2 = 'Biz onları \"Moğollar\" olarak çağırırdık.';
// Biz onları "Moğollar" olarak çağırırdık. ifadesi konsola yazılır.
console.log(text2);
// Bir string'e backslash karakteri eklemek istersek `\\` karakterlerinden faydalanırız.
text2 = "\\ Karakteri backslash olarak tanımlanır.";
// \ Karakteri backslash olarak tanımlanır. ifadesi konsola yazılır.
console.log(text2);
Biz onları `Moğollar` olarak çağırırdık.
Biz onları "Moğollar" olarak çağırırdık.
\ Karakteri backslash olarak tanımlanır.
Bunların dışında bir kaç tür daha backslash escape character mevcuttur fakat bunlara değinmeye gerek görmüyorum arkadaşlar.
String veri türü özellikli değişkenlerin veri tipleri de string olacaktır.
Örnek
%%javascript
let x = "Hasan";
let y = "5";
// Konsola değişkenleri veri tipleri yazılır.
console.log("x'in veri tipi " + typeof x+ " 'dir.")
console.log("y'nin veri tipi "+ typeof y+ " 'dir.")
x'in veri tipi string 'dir.
y'nin veri tipi string 'dir.
Bildiğimiz üzere JavaScript'de string özellikli değişkenler normalde immutable, ilkel ve string veri tipine sahip veri türleridir.
Ancak new
keyword'u kullanılarak object veri tipinde string veri türleri oluşturulabilir.
Örnek
%%javascript
// student değişkeni nesne özellikli olup veri tipi object'dir.
let student = new String("Candan")
console.log("student= "+student)
console.log("student değişkeninin veri tipi "+typeof student+ "' dir.")
let student2 = "Murat";
console.log("student2= "+student2)
console.log("student2 değişkeninin veri tipi " + typeof student2 + "' dir.")
student= Candan
student değişkeninin veri tipi object' dir.
student2= Murat
student2 değişkeninin veri tipi string' dir.
❗ Object tipinde string veri tiplerinin kullanılması tavsiye edilmez. Özellikle mantıksal operatörlerin kullanıldığı expression'larda beklenmedik sonuçlar ile karşılaşabiliriz.
Ek olarak kodları komplike hale getireceği için kod bloklarının yavaş çalışmasına neden olacaktır.
Object veri tipindeki iki değişkenin kıyaslanması durumunda sonuç daima false
olarak geri döner.
Örnek
%%javascript
const student = new String("Candan");
const student2 = new String("Murat");
/**
* Her iki değişken türü object veri tipine sahip olsa da tür bakımından kıyaslandıklarında birbirine eşit değildirler.
* Çünkü object veri tipine sahip değişkenler unique olma özelliği taşır.
*/
console.log(student===student2)
false
JavaScript'de ``
karakterleri template literals veya back-ticks olarak ifade edilir. Template literals'ler özellikle interpolation2 işlemlerinde sıkça kullanılır. Bir template literals ile string veri türüne sahip bir değişken tanımlanabilir. Fakat bu yöntem nadiren kullanılır.
Örnek
%%javascript
const text =`Bu Hasan'nın bisikleti. Hasan bisikletine "Canavar" lakabını takmış.`
console.log(text)
Bu Hasan'nın bisikleti. Hasan bisikletine "Canavar" lakabını takmış.
Template literal olarak tanımlanmış string ifadeler birden fazla satırdan oluşabilir. Back-ticks içerisindeki string ifade olduğu gibi kullanılır.
Örnek
%%javascript
const text = `
Bu Hasan'nın bisikleti.
Hasan bisikletine "Canavar" lakabını
takmış.`
console.log(text)
Bu Hasan'nın bisikleti.
Hasan bisikletine "Canavar" lakabını
takmış.
Aşağıdaki örnekte template literal ile interpolation kullanımı görülüyor. Interpolation işlemi gerçekleştirmek için ${}
karakterlerinden faydalanılır.
Örnek
%%javascript
const student = { studentName: "Emin", studentSurName: "Altan" }
console.log(`Öğrencinin adı ${student["studentName"]}'dir. Soyadı ${student.studentSurName}'dir.`)
Öğrencinin adı Emin'dir. Soyadı Altan'dir.
Aşağıdaki örnekte HTML elementleri için interpolation yöntemi bir döngü içerisinde kullanılmış.
Örnek
%%javascript
const header = "Template Literal Örneği"
const kelimeler = ["template", "literal", "javascript", "es6"]
let html = `<h2>${header}</h2><ul>`
for (const x of kelimeler) {
html+=`<li>${x}</li>`
}
html += `<ul>`
console.log(html)
<h2>Template Literal Örneği</h2><ul><li>template</li><li>literal</li><li>javascript</li><li>es6</li><ul>
Bazen bir string değeri belli kriterlere göre parçalamak, birleştirmek veya bazı durumlarda string değeri oluşturan karakterleri küçük harfe çevirmek isteyebiliriz. JavaScript bize benzeri işlemleri yapmamızı sağlayan ön tanımlı metotlar sunar. Bu bölümde string değerler üzerinde işlemlerimizi kolaylaştıran sıkça kullanılan bir takım metotlara değineceğiz.
Bir string ifadedeki karakter sayısını öğrenmemize yardımcı olur.
Örnek
%%javascript
const uluTurk = "Atatürk";
// Atatürk ifadesindeki karakter sayısı konsola yazdırılır.
console.log(uluTurk.length)
7
String ifadeler 3 metot kullanarak parçalara ayrılabilir:
-
slice()
metoduyla -
substring()
metoduyla -
substr()
metoduyla
Şimdi bunları tek tek inceleyelim.
slice()
metodu bir string ifadeyi parçalarına ayırır. Ayrılan parça yeni bir string değer olarak geri döndürülür.
Metodun kullanımında iki parametre vardır. Bunlar başlangıç ve bitiş parametreleridir. Bu parametreler birbirlerinden ,
işareti ile ayrılırlar. Bitiş parametresinin kullanılması isteğe bağlıdır. Kullanılması halinde başlangıç parametresi ile bitiş parametresi arasındaki kısım string ifadeden ayrılır. Kullanılmadığı durumlarda başlangıç için belirtilen parametreden string ifadenin sonuna kadar işlem gerçekleştirilir.
Örnek
%%javascript
const text = "Mehmet Emin Altan"
// İlk 7 karakter string ifadeden atılır ve kalan string ifade geri döndürülür.
const part = text.slice(7)
console.log(part)
// 7 ile 11 arasındaki karakterleri konsola yazar.
const part2=text.slice(7,11)
console.log(part2)
Emin Altan
Emin
💡 Parametrelerde negatif değerler kullanılabilir. Bu durumda string ifadenin sonundan işlem yapılmaya başlanır.
Örnek
%%javascript
const text = "Mehmet Emin Altan"
// Ayırma işlemine sondan başlanacak ve 10 karakter geri döndürülecektir.
const part = text.slice(-10)
console.log(part)
// Sondan başlayarak 5 ile 10 arasındaki karakterleri konsola yazar.
part2 = text.slice(-10, -5)
console.log(part2)
Emin Altan
Emin
Kullanımı slice()
metoduna benzerdir. Aradaki fark parametreler için negatif değer kullanıldığında substring()
metodu bu parametreleri 0 rakamı olarak yorumlar.
Örnek
%%javascript
const text = "Mehmet Emin Altan"
/**
* -10 rakamı negatif olması sebebiyle substring() metodu tarafından 0 olarak yorumlanacak
* ve string ifade baştan sona kadar konsola yazdırılacaktır.
*/
const part = text.substring(-10)
console.log(part)
Mehmet Emin Altan
Kullanımı slice()
metoduna benzerdir. Aradaki fark ikinci parametrenin kullanım şeklidir.
substr()
metodunun iki parametreli kullanılması durumunda ilk parametrenin string değerde kaçıncı karaktere denk geldiği bulunur sonrasında bu karakter referans alınarak ikinci parametrenin kaçıncı karaktere denk geldiği hesaplanır.
Hatırlarsak slice()
metodunda belirtilen iki parametre arasında işlem yapılıyordu.
Örnek
%%javascript
const text = "Mehmet Emin Altan"
/**
* 6. karakterin denk geldiği harf bulunacak ve bu karakter referans alacak ardından
* üzerine 5 rakamını sayılıp elde edilen sonucu konsola yazdıracaktır.
*/
const part = text.substr(6,5)
console.log(part)
Emin
Şayet ikinci parametre kullanılmaz ise ilk parametre sayısı kadar string değerden karakter eksiltilerek elde edilen sonuç kullanılır.
Örnek
%%javascript
const text = "Mehmet Emin Altan"
/**
* İlk 6 karakter string değerden eksiltilecek ve elde edilen sonuç konsola yazdırılacaktır.
*/
const part = text.substr(6)
console.log(part)
Emin Altan
❗substr()
metodu gelecekte web standardından çıkarılması düşünüldüğünden bu metodun kullanılmaması tavsiye olunur.
substr()
metodunda negatif değerler kullanılabilir. Eğer ilk parametrede negatif değer kullanılırsa işlemler sondan başa doğru gerçekleştirilir.
Örnek
%%javascript
const text = "Mehmet Emin Altan"
// Sondan 5 karakter konsola yazdırılacaktır.
const part = text.substr(-5)
console.log(part)
Altan
replace()
metodu ile string ifadenin bir kısmını başka bir string ifade ile değiştirebiliriz. İşlem yapılan string ifadenin yapısı bozulmaz. Elde edilen ifade yeni bir string şeklinde oluşturulur. Bunun sebebi string veri türünün immutable olmasından kaynaklıdır.
replace()
metodunda iki parametre kullanılır. ilk parametre değiştirilmek istenen string ifadeyi belirlerken ikinci parametre ise değiştirilecek ifadeyi belirler.
Örnek
%%javascript
const text = "Bugün hava çok güneşli."
// text değişkeni içerisindeki güneşli kısmı yağmurlu olacak şekilde değiştirilecektir.
console.log(text.replace("güneşli","yağmurlu"))
Bugün hava çok yağmurlu.
replace()
metodu case-sensitive özelliğe sahiptir. Bir önceki örnek üzerinden konuşursak GÜNEŞLİ
işe güneşli
aynı anlama gelmez.
Örnek
%%javascript
const text = "Bugün hava çok güneşli."
// replace() metodu case-sensitive olması nedeniyle herhangi bir değişikli yapmadan sonucu geri döndürecektir.
console.log(text.replace("GÜNEŞLİ","yağmurlu"))
Bugün hava çok güneşli.
replace()
metodu ilk uyuşan kısımda işlevini yerini getirir. Diğer kısımlardaki içerik değiştirilmez. Bunu gerçekleştirmek için replace()
metodunun regular expression'lar3 ile birlikte kullanmamız gerekir.
Örnek
%%javascript
const text ="Ahmet yolda gidiyordu. Ahmet yolda para buldu. Ahmet sonrasında parayı sahibine iade etti."
// String ifade içerisindeki Ahmet kısmı, Gözde ile değiştirilecektir.
console.log(text.replace(/Ahmet/g, "Gözde"));
Gözde yolda gidiyordu. Gözde yolda para buldu. Gözde sonrasında parayı sahibine iade etti.
Örnekte g
parametresi global olarak tanımlanır. Yani Ahmet
kısmı string ifadenin tümünde aranacak ve bulunduğu yerde Gözde
string ifadesi ile yer değiştirecektir.
String ifade içerisinde değiştirilmek istenen kısımlar birden fazla olabilir. Bu durumda replaceAll()
metodu kullanılabilir.
replaceAll()
metodu 2021 yılında JavaScript'de dahil olmuştur ve Internet Explorer bu metodu desteklemez.
Örnek
%%javascript
const text ="Ahmet yolda gidiyordu. Ahmet yolda para buldu. Ahmet sonrasında parayı sahibine iade etti."
// replaceAll() metodu ile regular expression kullanmamıza gerek kalmadı.
console.log(text.replaceAll("Ahmet", "Gözde"));
Gözde yolda gidiyordu. Gözde yolda para buldu. Gözde sonrasında parayı sahibine iade etti.
toUpperCase()
metodu ile bir string ifadenin karakterleri büyük harflere çevrilebilir.
Örnek
%%javascript
const text ="ömer altan"
console.log(text.toUpperCase())
ÖMER ALTAN
toLowerCase()
metodu ile bir string ifadenin karakterleri küçük harflere çevrilebilir.
Örnek
%%javascript
const text ="Ömer Altan"
console.log(text.toLowerCase())
ömer altan
concat()
metodu ile birden fazla string ifade birbirine eklenebilir. concat()
metodu string veri türlerinde +
operatörü ile aynı işlevi görür.
Örnek
%%javascript
const text = "Bahçede"
const text1 = "kedi gördüm"
console.log(text.concat(" bir ",text1))
Bahçede bir kedi gördüm
trim()
metodu ile bir string ifadenin başındaki ve sonundaki white space karakterleri kaldırabiliriz.
Örnek
%%javascript
const text = " Bahçede "
// text değişkeni white space karakterler ile birlikte 20 karakterden oluşuyor.
console.log(text.length)
// trim() metodu ile white space karakterleri temizliyoruz böylece karakter sayısı 7'ye inmiş oluyor.
console.log(text.trim().length)
20
7
Bazen bir string ifadenin başındaki white space karakterleri kaldırmak isteyebiliriz. Bu durumda trimStart()
metodunu kullanabiliriz.
trimStart()
metodu 2019 yılında JavaScript'de dahil olmuştur. Modern tarayıcılar 2020 yılından itibaren bu metodu desteklemektedirler.
Örnek
%%javascript
const text = " Bahçede "
// text değişkeni white space karakterleri ile birlikte 20 karakterden oluşuyor.
console.log(text.length)
// trimStart() metodu ile baştaki white space karakterleri temizliyoruz böylece karakter sayısı 14'e inmiş oluyor.
console.log(text.trimStart().length)
20
14
Bazen bir string ifadenin sonundaki white space karakterleri kaldırmak isteyebiliriz. Bu durumda trimEnd()
metodunu kullanabiliriz.
trimEnd()
metodu 2019 yılında JavaScript'de dahil olmuştur. Modern tarayıcılar 2020 yılından itibaren bu metodu desteklemektedirler.
Örnek
%%javascript
const text = " Bahçede "
// text değişkeni white space karakterler ile birlikte 20 karakterden oluşuyor.
console.log(text.length)
// trimEnd() metodu ile sondaki white space karakterleri temizliyoruz böylece karakter sayısı 13'e inmiş oluyor.
console.log(text.trimEnd().length)
20
13
padStart()
metodu ile string ifadenin karakter sayısı belirlediğimiz değere ulaşıncaya kadar bir string ifadeye başka bir string ifadeyi tekrar tekrar ekler.
Ekleme işlemi string ifadenin başından başlayarak yapılır.
İki parametre alır. İlk parametre tekrar sayısını belirler. İkinci parametre ise eklenecek string ifadeyi temsil eder.
💡 Telefon veya kredi kartı numarası gibi gizliliğini korumak istediğimiz verilerde kullanılabilir.
Örnek
%%javascript
const cardNumber="21587458974123"
// slice() metodu ile string ifadenin son 4 karakteri kullanıma ayrılıyor.
const slicedText = cardNumber.slice(-4)
// slicedText değişkeninin başına 10 karakter olacak şekilde * işaretini ekler.
const pattern = slicedText.padStart(10, "*")
console.log(pattern)
******4123
padStart()
metodu 2017 yılında JavaScript'de dahil olmuştur.
padStart()
bir string metodudur. Bu nedenle işlem yapılacak değer şayet string veri türü değilse ilk baş string veri türüne dönüştürülmesi gerekir. padStart()
metodunu Internet Explorer desteklemez.
Örnek
%%javascript
// num değişkeni number veri türündedir.
const num = 5;
// toString() metodu ile num değişkeni string veri türüne dönüştürülüyor.
const text = num.toString()
// text değişkeninin depoladığı değer 3 karakter uzunluğa erişene kadar 0 rakamını depolanan değerin başına ekleyecektir.
console.log (text.padStart(3,"0"))
005
padStart()
mantığıyla çalışır. Aradaki fark string ifade sona eklenir.
Örnek
%%javascript
const text = "5"
// text değişkeninin depoladığı değer 8 karakter uzunluğa erişene kadar 0 rakamını depolanan değerin sonuna ekleyecektir.
console.log(text.padEnd("8","0"))
50000000
Bazen string bir ifadeyi oluşturan karakterler üzerinde işlemler yapmak isteyebiliriz Bu durumda iki metottan faydalanırız:
-
charAt()
metoduyla -
charCodeAt()
metoduyla
Şimdi de bunlara değinelim.
Metot içerisinde belirlenen index değerinin string ifade içerisindeki karakter karşılığını verir.
Örnek
%%javascript
const text = "Deneme"
// String ifadenin 2. karakteri konsola yazdırılır.
console.log(text.charAt(2))
n
❗Dikkat ettiyseniz 2. karakter n
harfine denk geldi. Çünkü string metotlarının tümünde ilk karakterin index değeri daima 0'dır.
2009 yılından itibaren index değeri []
işaretlerinin kullanılmasına izin verilmiştir.
Örnek
%%javascript
const text = "Deneme"
console.log(text[0])
D
-
Kullanım şekli sebebi ile array veri türüne erişimi anımsatır.
-
Eğer
[]
arasındaki index değeri string ifade içerisinde bulunmazsa geri döndürülecek değerundefined
olacaktır.charAt()
metodunda geriye boş string döndürülür. -
[]
işaretinin içerisindeki index değeri ile string ifadenin karakterine yeni bir değer atanamaz. Şayet atama yapılırsa hata mesajı alınmaz fakat statement çalışmayacaktır.
Örnek
%%javascript
const text = "Deneme"
// String ifade 10 karakterden oluşmadığı için 10. karaktere ait bir veri de olmayacaktır. undefined olarak sonuç geri döner.
console.log(text[10])
// Boş string değer döndürülür.
console.log(text.charAt(10))
// text değişkeninin depoladığı Deneme ifadesindeki D karakterini A olarak değiştirmeye çalışıyoruz.
text[0] = "A"
// Fakat Deneme ifadesindeki ilk karakter değişmeyecektir. Bunun sebebi string veri türlerinin immutable olmasıdır.
console.log(text)
undefined
Deneme
Metot içerisinde belirlenen index değerinin string ifadedeki karakter karşılığı UTF-16 karakter setine göre verilir.
Örnek
%%javascript
const text = "Deneme"
// String ifadenin 1 karakteri olan e harfinin UTF-16 karakter setindeki karşılığını konsola yazılacaktır.
console.log(text.charCodeAt(0))
68
Bazen bir string ifadeyi belirleyeceğimiz bir parametreye göre parçalara ayırıp her bir parça üzerinde işlem yapmak isteyebiliriz. Bu durumda split()
metodunu kullanılır ve her bir parça array veri türünü çevrilir.
Örnek
Bir string ifadenin hem kullanıcı adından hem de şifresinden oluştuğunu varsayalım. String ifadenin kullanıcı adı ve şifre kısmına erişmek istiyoruz diyelim. Bunu en kolay split()
metoduyla gerçekleştirebiliriz.
%%javascript
const user = "Ömer Altan 123456";
// String ifadenin parçalanması için white space karakteri kullandık.
const splittedUser = user.split(" ");
// 0 index değeri konsola yazdırılır.
console.log(splittedUser[0])
// 2. index değeri konsola yazdırılır.
console.log(splittedUser[2])
Ömer
123456
Bazen bir string ifade içerisinde başka bir string ifadeyi aramak isteyebiliriz. Bu gibi durumlarda string arama metotları kullanılır.
Başlıca string arama metotlarını listelersek:
-
IndexOf()
metodu -
lastIndexOf()
metodu -
search()
metodu -
match()
metodu -
matchAll()
metodu -
includes()
metodu -
startsWith()
metodu -
endWith()
metodu.
Şimdi de bunlara değinelim arkadaşlar.
String ifade içerisinde başka bir string ifadeyi arar ve bulması halinde string ifadenin index değerini geri döndürür. Arama işlemi aranan değerin bulunması durumunda sonlanacak ve string ifadenin geri kalanına bakılmayacaktır.
Örnek
%%javascript
const text = "Lütfen ödemeyi kasaya yapınız ve kasadan fiş isteyiniz."
/**
* kasa kelimesi string ifadede 15. karaktere denk geliyor. Yani kasa kelimesinin index değeri 15'dir.
* Kelime bulunduktan sonra arama işlemi son bulacaktır.
*/
console.log(text.indexOf("kasa"))
15
indexOf()
metodu gibi çalışır. Aradaki fark string ifade içerisinde uyuşan en son kısmın index değerini geri döndürecektir.
Örnek
%%javascript
const text = "Lütfen ödemeyi kasaya yapınız ve kasadan fiş isteyiniz."
//String ifadenin sonunda bulunan kasa kelimesinin index değeri 33'dür.
console.log(text.lastIndexOf("kasa"))
33
Şayet parametre içerisindeki değer string ifade içerisinde bulunamaz ise sonuç olarak -1
rakamı geri döndürülür. Bu durum indexOf()
metodu için de geçerlidir.
Örnek
%%javascript
const text = "Lütfen ödemeyi kasaya yapınız ve kasadan fiş isteyiniz."
// Saadet kelimesi string ifade içerisinde olmadığında -1 değeri geri döndürülür.
console.log(text.lastIndexOf("Saadet"))
-1
lastIndexOf()
metodunda 2.parametre kullanılabilir. Bu durumda arama işleminin kaçıncı karakterden itibaren yapılacağı belirtilmiş olunur. Bu durum indexOf()
metodu için de geçerlidir.
indexOf()
metodu ile arama işlemi string ifadenin başından yapılırken, lastIndexOf()
metodu ile arama işlemi string ifadenin sonundan başlayarak yapılır.
Örnek
%%javascript
const text = "Lütfen ödemeyi kasaya yapınız ve kasadan fiş isteyiniz."
// Arama işlemi baştan 18. karakterden sonra başlayacaktır.
console.log(text.indexOf("kasa", 18))
// Arama işlemi sonran 21. karakterden sonra başlayacaktır.
console.log(text.lastIndexOf("kasa", 21))
33
15
indexOf()
metodu gibi çalışır aradaki fark indexOf()
metodunda 2. parametre kullanılabilirken search()
metodunda 2. parametre kullanılamaz. Bu duruma ek olarak search()
metodu regular expression'ları destekler iken indexOf()
metodu regular expression'ları desteklemez.
❗ Regular expression'ları desteklemesi sebebi ile search()
metodu string ifadeleri aramada oldukça etkili bir metottur.
Örnek
%%javascript
const text = "Lütfen ödemeyi kasaya yapınız ve kasadan fiş isteyiniz."
// String ifade içerisinde kasa kelimesi ile ilk uyuşan kısma ait index değeri geri döndürülür.
console.log(text.search(/kasa/))
15
String ifade içerisinde başka bir string ifadeyi arar ve bulması durumunda işlem sonlanır, string ifadenin geri kalan kısmına bakılmaz ve sonuç array veri türü şeklinde geri döndürülür.
match()
metodu regular expression'lar ile birlikte kullanılabilir. g
flag'ı ile birlikte kullanılması durumunda string ifadenin tümüne bakılır.
Örnek
%%javascript
const text = "Merhaba benim adım Hasan";
const result = text.match("Hasan");
// Hasan ifadesi string ifade içerisinde aranacak bulunması halinde array veri türü şeklinde özet bilgileri konsola yazdırılacak.
console.log(result);
[
'Hasan',
index: 19,
input:'Merhaba benim adım Hasan',
groups: undefined
]
Aşağıdaki örnekte g
flag'ı ile birlikte kullanımı görülüyor.
Örnek
%%javascript
const text = "Bugün hava güneşli ve ben güneşli havalardan hoşlanırım."
const result = text.match(/güneşli/g);
/**
* güneşli ifadesi string ifade içerisinde aranacak bulunması halinde array veri türü şeklinde özet bilgileri konsola
* yazdırılacak. Arama işlemi string ifadenin sonuna kadar yapılacak.
*/
console.log(result);
[ 'güneşli', 'güneşli']
match()
metodu gibi çalışır aradaki fark match()
metodu sadece ilk eşleşmeyi döndürürken,matchAll()
metodu tüm eşleşmeleri döndürür.
matchAll()
metodu 2020 yılında JavaScript'e dahil olmuştur ve Internet Explorer'da çalışmamaktadır.
Örnek
%%javascript
const text = "Bugün hava güneşli ve ben güneşli havalardan hoşlanırım."
const result = text.matchAll("güneşli");
/**
* güneşli ifadesi string ifade içerisinde aranacak bulunması halinde array veri türü şeklinde özet bilgileri konsola
* yazdırılacak. Arama işleminden elde edilen tüm sonuçlar konsola yazdırılacak.
*/
console.log(Array.from(result));
[
[
'güneşli',
index: 11,
input: 'Bugün hava güneşli ve ben güneşli havalardan hoşlanırım.',
groups: undefined
],
[
'güneşli',
index: 26,
input: 'Bugün hava güneşli ve ben güneşli havalardan hoşlanırım.',
groups: undefined
]
]
Bazen bir string ifade içerisinde başka bir string ifadenin olup/olmadığını öğrenmek isteriz. Bu durumda includes()
metodundan faydalanırız. Şayet aradığımız içerik string ifade içerisinde varsa sonuç true
yoksa false
olarak geri döndürülür.
includes()
metodu case-sensitive özelliğe sahiptir. ES6 ile birlikte JavaScript'e dahil olmuştur. Interne Explorer bu metodu desteklemez.
Örnek
%%javascript
const text = "Hasan bugün okula gidecek mi?"
// Hasan string ifadesi string ifade içerisinde bulunması sebebi ile sonuç true olarak geri döndürülecektir.
console.log(text.includes("Hasan"))
// Samed string ifadesi string ifade içerisinde bulunmaması sebebi ile sonuç false olarak geri döndürülecektir.
console.log(text.includes("Samed"))
true
false
Bazen bir string ifadenin sonunu istediğimiz içerikle bitip/bitmediğini öğrenmek isteriz. Bu durumda endsWith()
metodu kullanılır. Eğer string ifadenin sonu belirlediğimiz parametre ile bitiyorsa sonuç true
olarak geri döndürülür. Aksi durumda sonuç false
olarak geri döndürülecektir.
Örnek
%%javascript
const text = "Hasan bugün okula gidecek mi?"
// String ifadenin sonu mi? ile bittiğinden sonuç true olarak geri döndürülür.
console.log(text.endsWith("mi?"))
// String ifadenin sonu Hasan ile bitmediğinden sonuç false olarak geri döndürülür.
console.log(text.endsWith("Hasan"))
true
false
endsWith()
metodu ile aynı mantıkta çalışır. Aradaki fark işlemin string ifadenin başından başlayarak yapılmasıdır.
Örnek
%%javascript
const text = "Hasan bugün okula gidecek mi?"
// String ifadenin başı mi? ile bitmediğinden sonuç false olarak geri döndürülür.
console.log(text.startsWith("mi?"))
// String ifadenin başı Hasan ile bittiğinden sonuç true olarak geri döndürülür.
console.log(text.startsWith("Hasan"))
false
true
startsWith()
ve endsWith()
metotları ES6 ile birlikte JavaScript'e dahil olmuştur. Her iki metot case-sensitive özelliğe sahip olup Internet Explorer tarafından desteklenmez.
Footnotes
-
JavaScript'de ters eğik çizgi (backslash) karakteri (), özellikle metin (string) dizileri içerisinde özel karakterleri veya kontrol dizilerini temsil etmek için kullanılır. Ters eğik çizgi, ardışık karakterlerin veya özel anlamları olan karakterlerin kaçış (escape) dizilerini oluşturur. ↩
-
JavaScript'te "interpolation", genellikle bir dizede değişken veya ifadelerin değerlerini içine yerleştirmek anlamına gelir. Bu, dize oluştururken bir dize içinde değişken veya ifadelerin değerlerini dinamik olarak eklemenizi sağlar. Template literals (şablon dizgileri), bu tür bir değer yerleştirme (interpolation) için ES6 ile birlikte JavaScript'e eklenmiştir. Template literals içinde, süslü parantez içindeki ifadeler veya değişkenler, dize içinde değerleriyle yer değiştirir. ↩
-
Düzenli ifadeler (Regular Expressions veya Regex), metinle ilgili desenleri tanımlamak için kullanılan bir dildir. Bu desenler, metin içinde belirli karakterleri bulma, değiştirme, eşleştirme veya çıkarma gibi işlemleri gerçekleştirmek için kullanılır. Regex, metin madde analizi, veri madenciliği, metin ve dizge işleme gibi birçok uygulama alanında yaygın olarak kullanılır. ↩
Top comments (0)