LISP - String

String dalam Common Lisp adalah vektor, yaitu larik karakter satu dimensi.

Literal string diapit tanda kutip ganda. Setiap karakter yang didukung oleh kumpulan karakter dapat diapit dalam tanda kutip ganda untuk membuat string, kecuali karakter tanda kutip ganda (") dan karakter escape (\). Namun, Anda dapat menyertakannya dengan meng-escape dengan garis miring terbalik (\).

Contoh

Buat file kode sumber baru bernama main.lisp dan ketikkan kode berikut di dalamnya.

(write-line "Hello World")
(write-line "Welcome to Tutorials Point")

;escaping the double quote character
(write-line "Welcome to \"Tutorials Point\"")

Saat Anda menjalankan kode, ia mengembalikan hasil berikut -

Hello World
Welcome to Tutorials Point
Welcome to "Tutorials Point"

Fungsi Perbandingan String

Fungsi dan operator perbandingan numerik, seperti, <dan> tidak berfungsi pada string. LISP umum menyediakan dua set fungsi lain untuk membandingkan string dalam kode Anda. Satu set peka huruf besar-kecil dan yang lainnya tidak peka huruf besar-kecil.

Tabel berikut menyediakan fungsi -

Fungsi Peka Huruf Besar-Kecil Fungsi tidak peka huruf besar / kecil Deskripsi
string = string-sama Memeriksa apakah nilai operan semua sama atau tidak, jika ya maka kondisi menjadi benar.
string / = string-tidak sama Memeriksa apakah nilai operan semua berbeda atau tidak, jika nilai tidak sama maka kondisi menjadi benar.
string < string-lessp Memeriksa apakah nilai operan menurun secara monoton.
string> string-lebih besar Memeriksa apakah nilai operan meningkat secara monoton.
string <= string-tidak-lebih besar Memeriksa apakah nilai setiap operan kiri lebih besar dari atau sama dengan nilai operan kanan berikutnya, jika ya maka kondisi menjadi benar.
string> = string-not-lessp Memeriksa apakah nilai operan kiri kurang dari atau sama dengan nilai operan kanannya, jika ya maka kondisi menjadi benar.

Contoh

Buat file kode sumber baru bernama main.lisp dan ketikkan kode berikut di dalamnya.

; 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"))

Saat Anda menjalankan kode, ia mengembalikan hasil berikut -

NIL
0
NIL
T
NIL
NIL
8
NIL
4
5

Fungsi Pengendalian Kasus

Tabel berikut menjelaskan fungsi pengendalian kasus -

Sr.No. Deskripsi fungsi
1

string-upcase

Mengonversi string menjadi huruf besar

2

string-downcase

Mengonversi string menjadi huruf kecil

3

string-capitalize

Kapitalisasi setiap kata dalam string

Contoh

Buat file kode sumber baru bernama main.lisp dan ketikkan kode berikut di dalamnya.

(write-line (string-upcase "a big hello from tutorials point"))
(write-line (string-capitalize "a big hello from tutorials point"))

Saat Anda menjalankan kode, ia mengembalikan hasil berikut -

A BIG HELLO FROM TUTORIALS POINT
A Big Hello From Tutorials Point

Memangkas String

Tabel berikut menjelaskan fungsi pemangkasan string -

Sr.No. Deskripsi fungsi
1

string-trim

Ini mengambil string karakter sebagai argumen pertama dan string sebagai argumen kedua dan mengembalikan substring di mana semua karakter yang ada di argumen pertama dihapus dari string argumen.

2

String-left-trim

Ini mengambil string karakter sebagai argumen pertama dan string sebagai argumen kedua dan mengembalikan substring di mana semua karakter yang ada di argumen pertama dihapus dari awal string argumen.

3

String-right-trim

Ini mengambil karakter string sebagai argumen pertama dan string sebagai argumen kedua dan mengembalikan substring di mana semua karakter yang ada di argumen pertama dihapus dari akhir string argumen.

Contoh

Buat file kode sumber baru bernama main.lisp dan ketikkan kode berikut di dalamnya.

(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   "))

Saat Anda menjalankan kode, ia mengembalikan hasil berikut -

a big hello from tutorials point
a big hello from tutorials point   
   a big hello from tutorials point
big hello from tutorials point

Fungsi String Lainnya

String dalam LISP adalah array dan juga urutan. Kami akan membahas tipe data ini dalam tutorial mendatang. Semua fungsi yang berlaku untuk array dan urutan juga berlaku untuk string. Namun, kami akan mendemonstrasikan beberapa fungsi yang umum digunakan menggunakan berbagai contoh.

Menghitung Panjang

Itu length fungsi menghitung panjang string.

Mengekstrak Sub-string

Itu subseq fungsi mengembalikan sub-string (sebagai string juga merupakan urutan) mulai dari indeks tertentu dan melanjutkan ke indeks akhir tertentu atau akhir string.

Mengakses Karakter dalam String

Itu char fungsi memungkinkan mengakses karakter individu dari sebuah string.

Example

Buat file kode sumber baru bernama main.lisp dan ketikkan kode berikut di dalamnya.

(write (length "Hello World"))
(terpri)
(write-line (subseq "Hello World" 6))
(write (char "Hello World" 6))

Saat Anda menjalankan kode, ia mengembalikan hasil berikut -

11
World
#\W

Menyortir dan Menggabungkan String

Itu sortfungsi memungkinkan pengurutan string. Dibutuhkan urutan (vektor atau string) dan predikat dua argumen dan mengembalikan versi urutan yang diurutkan.

Itu merge Fungsi mengambil dua urutan dan predikat dan mengembalikan urutan yang dihasilkan dengan menggabungkan dua urutan, sesuai dengan predikatnya.

Example

Buat file kode sumber baru bernama main.lisp dan ketikkan kode berikut di dalamnya.

;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<))

Saat Anda menjalankan kode, ia mengembalikan hasil berikut -

#("Akbar" "Amal" "Anthony")
#("Anju" "Anuj" "Avni" "Rishi" "Zara" "Priyanka")

Membalikkan String

Itu reverse fungsi membalikkan string.

Misalnya, Buat file kode sumber baru bernama main.lisp dan ketikkan kode berikut di dalamnya.

(write-line (reverse "Are we not drawn onward, we few, drawn onward to new era"))

Saat Anda menjalankan kode, ia mengembalikan hasil berikut -

are wen ot drawno nward ,wef ew ,drawno nward ton ew erA

String Penggabungan

Fungsi penggabungan menggabungkan dua string. Ini adalah fungsi urutan umum dan Anda harus memberikan tipe hasil sebagai argumen pertama.

Misalnya, Buat file kode sumber baru bernama main.lisp dan ketikkan kode berikut di dalamnya.

(write-line (concatenate 'string "Are we not drawn onward, " "we few, drawn onward to new era"))

Saat Anda menjalankan kode, ia mengembalikan hasil berikut -

Are we not drawn onward, we few, drawn onward to new era