> For the complete documentation index, see [llms.txt](https://hanuce.gitbook.io/javascript-egitimi/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://hanuce.gitbook.io/javascript-egitimi/ilkel-primitive-veri-tipleri/string-karakter-dizisi.md).

# String - Karakter Dizisi

{% hint style="warning" %}
Javascript UTF-16 karakter setini kullanır.
{% endhint %}

Bir değişkenin değeri ***tırnak arasında yazılmış ise*** veri tipi string-karakter dizisi olur. Karakter dizisi klavyeden girilebilecek boşluk, nokta, virgül, kuyruklu a, rakamlar vb. basılabilen tüm karakterleri içerir. Örnek:

{% code lineNumbers="true" %}

```javascript
let karakterDizisi = '1. Basitlik güvenirlik için önkoşuldur. @Dijkstra';
```

{% endcode %}

Üç tip tırnak işareti vardır. Bunlar:

* Çift Tırnak (Double Quote) (Basit)
* Tek Tırnak (Single Quote) (Basit)
* Ters (Garip) Tırnak (Backtick) (Genişletilmiş Fonksiyonlu)

Yazacağınız metinde basit tırnaklardan biri varsa dışardaki tırnakları tersine kullanmalısınız. Örnek:

{% code lineNumbers="true" %}

```javascript
// Dışardaki tırnaklar ile metin içindekiler tersine kullanılır.
let metin = "Javascript bir 'Java' dili değildir.";
// veya
let misra = 'Bastığın yerleri "toprak!" diyerek geçme, tanı!';
```

{% endcode %}

Bunu kontrol etmenin başka bir yolu da  *basit tırnak işaretinden önce* kaçış işareti '\\' eklemektir. Bu işaret çıktılarda görünmez. Deneyiniz.

{% code lineNumbers="true" %}

```javascript
let misra1 = "\"Gömelim gel seni târîhe\" desem, sığmazsın";
let misra2 = 'Doğacaktır sana va\'ettiği günler Hakk\'ın…';
alert(misra1);
alert(misra2);
```

{% endcode %}

Peki biz ekrana '\\' işaret yazdırmak istiyorsak ne yapmalıyız? İki kere kullanmalıyız. Deneyiniz.

{% code lineNumbers="true" %}

```javascript
let konum = 'C:\\Windows\\Users\\';
alert(konum);
```

{% endcode %}

Bu kaçış işaretlerinden birkaçı şunlardır.

<table><thead><tr><th width="148">Kaçış İşareti</th><th>İşlevi</th></tr></thead><tbody><tr><td>\</td><td>Basit tırnak işaretlerinin dıştakilerle çakışmasını engeller.</td></tr><tr><td>\\</td><td>'\' karakterinin basılmasını sağlar.</td></tr><tr><td>\n</td><td>Sonrasında yazılanları bir alt satırdan başlatır.</td></tr><tr><td>\u</td><td>Unicode karakteri yazmak için önek. (Örnek: \u00A9)</td></tr><tr><td>\t</td><td>Bir sekme boşluk bırakır. Dört tane boşluk.</td></tr></tbody></table>

&#x20;Örnekleri deneyiniz.

{% code lineNumbers="true" %}

```javascript
let satirBasi = "Birinci satır\nİkinci satır\nÜçüncü Satır";
alert(satirBasi);

let telifSembolu = '\u00A9';
alert('Her Hakkı Saklıdır. ' + telifSembolu);
```

{% endcode %}

**Ters** tırnak genişletilmiş fonksiyonları olan bir tırnak işaretidir. Ters tırnak ile yazılan karakter dizisinin içinde **`${ }`** ile kod yazımına geçebilirsiniz. Örnek:

{% hint style="info" %}
Ters tırnak işareti Alt Gr ile Virgül ( alt gr + , ) tuşlarına birlikte basılarak yapılır.
{% endhint %}

{% code lineNumbers="true" %}

```javascript
let dil = "Javascript"; //Basit tırnak kullandık.
let mesaj = `Öğrendiğimiz dil: ${dil} dilidir.`; // Ters tırnak kullandık.
alert(mesaj);
```

{% endcode %}

Çok satırlı bir metni tanımlamak istiyorsak yine **ters** tırnak ile yapabiliriz. Deneyiniz.

{% code lineNumbers="true" %}

```javascript
let dortluk = `Kim bu cennet vatanın uğruna olmaz ki fedâ?
Şühedâ fışkıracak, toprağı sıksan şühedâ!
Cânı, cânânı, bütün varımı alsın da Hudâ,
Etmesin tek vatanımdan beni dünyâda cüdâ.`; //Ters tırnak kullandık.
alert(dortluk);
```

{% endcode %}

## String'e Ait Özellikler (Property)

Bir programlama dilinde bir deyimin normal parantez () ile bitmesi onun bir fonksiyon olduğunun işaretidir. Örnek olarak **`alert()`** gibi. Buna '*`alert` fonksiyonu*' deriz. Fonksiyonlar bir dizi işlem silsilesidir.

Eğer fonksiyon **`.`** işareti ile bir öğeye bağlıysa buna **metot** (alt fonksiyon) denir. Örnek olarak **`console.log()`** gibi. Buna '*`console` öğesinin `log` metodu*' deriz.

**Özellik** (property) ise bir niteliktir. Bir değer ifade eder. Örnek olarak: Bir video dosyasını düşünün. Video dosyasının adı, uzunluğu, uzantısı bir niteliktir. Fakat videonun yürütülerek çalıştırılması fonksiyonlar veya metotlar ile olur.

## Uzunluk

> ### `.length`

Bir string değerin uzunluğu **`.length`** ile elde edilir. Örnek:

{% code lineNumbers="true" %}

```javascript
let dortluk = 'Arkadaş! Yurduma alçakları uğratma sakın;';
alert(dortluk.length);
// Başka bir örnek
alert('Benim makinemde çalışıyor.'.length);
```

{% endcode %}

**`.length`** bir özelliktir. Bir karakter dizisinin ilk karakterinin pozisyonu her zaman 0 (sıfır) değeridir. Örnek olarak 'Script' kelimesinin ilk karakteri olan S'nin pozisyonu 0, son karakter olan t'nin pozisyonu ise 5'tir. Dolayısıyla **`.length`** özelliği karakter dizisinin son karakterinin pozisyonu+1 değerini taşır.
