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