LISP - Dizeler
Common Lisp'teki dizeler vektörlerdir, yani tek boyutlu karakter dizisidir.
Dize değişmezleri çift tırnak içine alınır. Çift tırnak karakteri (") ve çıkış karakteri (\) dışında, karakter kümesinin desteklediği herhangi bir karakter çift tırnak içine alınabilir, ancak bu karakterlerden bir ters eğik çizgi (\) ile kaçış yapabilirsiniz.
Misal
Main.lisp adlı yeni bir kaynak kod dosyası oluşturun ve içine aşağıdaki kodu yazın.
(write-line "Hello World")
(write-line "Welcome to Tutorials Point")
;escaping the double quote character
(write-line "Welcome to \"Tutorials Point\"")
Kodu çalıştırdığınızda, aşağıdaki sonucu döndürür -
Hello World
Welcome to Tutorials Point
Welcome to "Tutorials Point"
Dize Karşılaştırma İşlevleri
<Ve> gibi sayısal karşılaştırma işlevleri ve operatörler dizeler üzerinde çalışmaz. Common LISP, kodunuzdaki dizeleri karşılaştırmak için başka iki işlev kümesi sağlar. Bir küme büyük / küçük harfe duyarlıdır ve diğeri büyük / küçük harfe duyarlı değildir.
Aşağıdaki tablo işlevleri göstermektedir -
Büyük / Küçük Harfe Duyarlı İşlevler | Büyük / Küçük Harfe Duyarlı Olmayan İşlevler | Açıklama |
---|---|---|
string = | dize eşit | İşlenenlerin değerlerinin hepsinin eşit olup olmadığını kontrol eder, evet ise koşul doğru olur. |
string / = | string-not-equal | İşlenenlerin değerlerinin tümünün farklı olup olmadığını kontrol eder, değerler eşit değilse koşul doğru olur. |
string < | telsiz | İşlenenlerin değerlerinin tekdüze olarak azalıp azalmadığını kontrol eder. |
dize> | string-büyükp | İşlenenlerin değerlerinin monoton olarak artıp artmadığını kontrol eder. |
string <= | string-büyük değil | Herhangi bir sol işlenenin değerinin bir sonraki sağ işlenenin değerinden büyük veya ona eşit olup olmadığını kontrol eder, evet ise koşul doğru olur. |
string> = | string-not-lessp | Herhangi bir sol işlenenin değerinin sağ işlenenin değerinden küçük veya ona eşit olup olmadığını kontrol eder, evet ise koşul doğru olur. |
Misal
Main.lisp adlı yeni bir kaynak kod dosyası oluşturun ve içine aşağıdaki kodu yazın.
; case-sensitive comparison
(write (string= "this is test" "This is test"))
(terpri)
(write (string> "this is test" "This is test"))
(terpri)
(write (string< "this is test" "This is test"))
(terpri)
;case-insensitive comparision
(write (string-equal "this is test" "This is test"))
(terpri)
(write (string-greaterp "this is test" "This is test"))
(terpri)
(write (string-lessp "this is test" "This is test"))
(terpri)
;checking non-equal
(write (string/= "this is test" "this is Test"))
(terpri)
(write (string-not-equal "this is test" "This is test"))
(terpri)
(write (string/= "lisp" "lisping"))
(terpri)
(write (string/= "decent" "decency"))
Kodu çalıştırdığınızda, aşağıdaki sonucu döndürür -
NIL
0
NIL
T
NIL
NIL
8
NIL
4
5
Durum Kontrol İşlevleri
Aşağıdaki tablo, durum kontrol işlevlerini açıklamaktadır -
Sr.No. | İşlev ve Açıklama |
---|---|
1 | string-upcase Dizeyi büyük harfe dönüştürür |
2 | string-downcase Dizeyi küçük harfe dönüştürür |
3 | string-capitalize Dizedeki her kelimeyi büyük harf yapar |
Misal
Main.lisp adlı yeni bir kaynak kod dosyası oluşturun ve içine aşağıdaki kodu yazın.
(write-line (string-upcase "a big hello from tutorials point"))
(write-line (string-capitalize "a big hello from tutorials point"))
Kodu çalıştırdığınızda, aşağıdaki sonucu döndürür -
A BIG HELLO FROM TUTORIALS POINT
A Big Hello From Tutorials Point
Dizeleri Kırpma
Aşağıdaki tablo, dizi kırpma işlevlerini açıklamaktadır -
Sr.No. | İşlev ve Açıklama |
---|---|
1 | string-trim İlk bağımsız değişken olarak bir karakter dizesi ve ikinci bağımsız değişken olarak bir dize alır ve ilk bağımsız değişkendeki tüm karakterlerin bağımsız değişken dizesinden kaldırıldığı bir alt dize döndürür. |
2 | String-left-trim İlk bağımsız değişken olarak bir karakter dizesi ve ikinci bağımsız değişken olarak bir dize alır ve ilk bağımsız değişkendeki tüm karakterlerin bağımsız değişken dizesinin başından kaldırıldığı bir alt dize döndürür. |
3 | String-right-trim İlk bağımsız değişken olarak bir dize karakter (ler) i ve ikinci bağımsız değişken olarak bir dize alır ve ilk bağımsız değişkendeki tüm karakterlerin bağımsız değişken dizesinin sonundan kaldırıldığı bir alt dize döndürür. |
Misal
Main.lisp adlı yeni bir kaynak kod dosyası oluşturun ve içine aşağıdaki kodu yazın.
(write-line (string-trim " " " a big hello from tutorials point "))
(write-line (string-left-trim " " " a big hello from tutorials point "))
(write-line (string-right-trim " " " a big hello from tutorials point "))
(write-line (string-trim " a" " a big hello from tutorials point "))
Kodu çalıştırdığınızda, aşağıdaki sonucu döndürür -
a big hello from tutorials point
a big hello from tutorials point
a big hello from tutorials point
big hello from tutorials point
Diğer String Fonksiyonları
LISP'deki dizeler dizilerdir ve dolayısıyla dizilerdir. Bu veri türlerini önümüzdeki eğitimlerde ele alacağız. Diziler ve diziler için geçerli olan tüm işlevler dizeler için de geçerlidir. Bununla birlikte, yaygın olarak kullanılan bazı işlevleri çeşitli örnekler kullanarak göstereceğiz.
Uzunluğu Hesaplama
length işlevi bir dizenin uzunluğunu hesaplar.
Alt dizeyi ayıklama
subseq işlev, belirli bir dizinde başlayan ve belirli bir bitiş dizinine veya dizenin sonuna kadar devam eden bir alt dizge (dizge aynı zamanda bir dizi olduğu için) döndürür.
Bir Dizedeki Bir Karaktere Erişim
char işlevi, bir dizenin tek tek karakterlerine erişime izin verir.
Example
Main.lisp adlı yeni bir kaynak kod dosyası oluşturun ve içine aşağıdaki kodu yazın.
(write (length "Hello World"))
(terpri)
(write-line (subseq "Hello World" 6))
(write (char "Hello World" 6))
Kodu çalıştırdığınızda, aşağıdaki sonucu döndürür -
11
World
#\W
Dizelerin Sıralanması ve Birleştirilmesi
sortişlevi bir dizenin sıralanmasına izin verir. Bir dizi (vektör veya dize) ve iki bağımsız değişkenli bir yüklem alır ve dizinin sıralanmış bir sürümünü döndürür.
merge işlevi iki dizi ve bir yüklem alır ve yüklemeye göre iki dizinin birleştirilmesiyle üretilen bir dizi döndürür.
Example
Main.lisp adlı yeni bir kaynak kod dosyası oluşturun ve içine aşağıdaki kodu yazın.
;sorting the strings
(write (sort (vector "Amal" "Akbar" "Anthony") #'string<))
(terpri)
;merging the strings
(write (merge 'vector (vector "Rishi" "Zara" "Priyanka")
(vector "Anju" "Anuj" "Avni") #'string<))
Kodu çalıştırdığınızda, aşağıdaki sonucu döndürür -
#("Akbar" "Amal" "Anthony")
#("Anju" "Anuj" "Avni" "Rishi" "Zara" "Priyanka")
Bir Dizeyi Ters Çevirme
reverse işlev bir dizeyi ters çevirir.
Örneğin, main.lisp adında yeni bir kaynak kodu dosyası oluşturun ve içine aşağıdaki kodu yazın.
(write-line (reverse "Are we not drawn onward, we few, drawn onward to new era"))
Kodu çalıştırdığınızda, aşağıdaki sonucu döndürür -
are wen ot drawno nward ,wef ew ,drawno nward ton ew erA
Dizeleri Birleştirme
Concatenate işlevi iki dizeyi birleştirir. Bu genel bir dizi işlevidir ve sonuç türünü ilk bağımsız değişken olarak sağlamalısınız.
Örneğin, main.lisp adında yeni bir kaynak kodu dosyası oluşturun ve içine aşağıdaki kodu yazın.
(write-line (concatenate 'string "Are we not drawn onward, " "we few, drawn onward to new era"))
Kodu çalıştırdığınızda, aşağıdaki sonucu döndürür -
Are we not drawn onward, we few, drawn onward to new era