Учебники

ЛИСП — Струны

Строки в Common Lisp являются векторами, то есть одномерным массивом символов.

Строковые литералы заключены в двойные кавычки. Любой символ, поддерживаемый набором символов, может быть заключен в двойные кавычки для создания строки, кроме символа двойной кавычки («) и escape-символа (\). Однако их можно включить, экранируя их обратной косой чертой (\).

пример

Создайте новый файл исходного кода с именем main.lisp и введите в него следующий код.

Live Demo

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

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

Когда вы выполняете код, он возвращает следующий результат —

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

Функции сравнения строк

Числовые функции сравнения и операторы, такие как <и>, не работают со строками. Common LISP предоставляет два других набора функций для сравнения строк в вашем коде. Один набор чувствителен к регистру, а другой — без учета регистра.

В следующей таблице представлены функции —

Чувствительные к регистру функции Функции без учета регистра Описание
строка = строка равных Проверяет, равны ли все значения операндов или нет, если да, тогда условие становится истинным.
Строка / = Строковое не равно Проверяет, все ли значения операндов различны или нет, если значения не равны, условие становится истинным.
строка < строка-lessp Проверяет, монотонно ли уменьшаются значения операндов.
строка> строка-greaterp Проверяет, монотонно ли увеличиваются значения операндов.
строка <= строка-не-greaterp Проверяет, является ли значение любого левого операнда больше или равно значению следующего правого операнда, если да, тогда условие становится истинным.
строка> = строка-не-lessp Проверяет, является ли значение любого левого операнда меньше или равно значению его правого операнда, если да, тогда условие становится истинным.

пример

Создайте новый файл исходного кода с именем main.lisp и введите в него следующий код.

Live Demo

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

Когда вы выполняете код, он возвращает следующий результат —

NIL
0
NIL
T
NIL
NIL
8
NIL
4
5

Функции управления делами

В следующей таблице описаны функции управления делами —

Sr.No. Описание функции
1

строка-Upcase

Преобразует строку в верхний регистр

2

строка-downcase

Преобразует строку в нижний регистр

3

строка-капитализировать

Прописывает каждое слово в строке

строка-Upcase

Преобразует строку в верхний регистр

строка-downcase

Преобразует строку в нижний регистр

строка-капитализировать

Прописывает каждое слово в строке

пример

Создайте новый файл исходного кода с именем main.lisp и введите в него следующий код.

Live Demo

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

Когда вы выполняете код, он возвращает следующий результат —

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

Обрезка струн

В следующей таблице описаны функции обрезки строк —

Sr.No. Описание функции
1

строка-отделка

Он принимает строку символов в качестве первого аргумента и строку в качестве второго аргумента и возвращает подстроку, в которой все символы в первом аргументе удаляются из строки аргумента.

2

Строка-левая отделка

Он принимает строку символов (символов) в качестве первого аргумента и строку в качестве второго аргумента и возвращает подстроку, в которой все символы, содержащиеся в первом аргументе, удаляются из начала строки аргумента.

3

Строка-правая облицовка

Он принимает символ (ы) строки в качестве первого аргумента и строку в качестве второго аргумента и возвращает подстроку, в которой все символы, содержащиеся в первом аргументе, удаляются из конца строки аргумента.

строка-отделка

Он принимает строку символов в качестве первого аргумента и строку в качестве второго аргумента и возвращает подстроку, в которой все символы в первом аргументе удаляются из строки аргумента.

Строка-левая отделка

Он принимает строку символов (символов) в качестве первого аргумента и строку в качестве второго аргумента и возвращает подстроку, в которой все символы, содержащиеся в первом аргументе, удаляются из начала строки аргумента.

Строка-правая облицовка

Он принимает символ (ы) строки в качестве первого аргумента и строку в качестве второго аргумента и возвращает подстроку, в которой все символы, содержащиеся в первом аргументе, удаляются из конца строки аргумента.

пример

Создайте новый файл исходного кода с именем main.lisp и введите в него следующий код.

Live Demo

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

Когда вы выполняете код, он возвращает следующий результат —

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

Другие строковые функции

Строки в LISP являются массивами и, следовательно, также последовательностями. Мы рассмотрим эти типы данных в следующих уроках. Все функции, применимые к массивам и последовательностям, также применимы к строкам. Однако мы продемонстрируем некоторые часто используемые функции на различных примерах.

Расчет длины

Функция length вычисляет длину строки.

Извлечение подстроки

Функция subseq возвращает подстроку (поскольку строка также является последовательностью), начиная с определенного индекса и продолжаясь до определенного конечного индекса или конца строки.

Доступ к символу в строке

Функция char позволяет получить доступ к отдельным символам строки.

пример

Создайте новый файл исходного кода с именем main.lisp и введите в него следующий код.

Live Demo

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

Когда вы выполняете код, он возвращает следующий результат —

11
World
#\W

Сортировка и объединение строк

Функция сортировки позволяет сортировать строку. Он принимает последовательность (вектор или строку) и предикат с двумя аргументами и возвращает отсортированную версию последовательности.

Функция слияния принимает две последовательности и предикат и возвращает последовательность, созданную путем слияния двух последовательностей, в соответствии с предикатом.

пример

Создайте новый файл исходного кода с именем main.lisp и введите в него следующий код.

Live Demo

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

Когда вы выполняете код, он возвращает следующий результат —

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

Сторнирование строки

Функция reverse переворачивает строку.

Например, создайте новый файл исходного кода с именем main.lisp и введите в него следующий код.

Live Demo

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

Когда вы выполняете код, он возвращает следующий результат —

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

Конкатенация строк

Функция concatenate объединяет две строки. Это универсальная функция последовательности, и вы должны предоставить тип результата в качестве первого аргумента.

Например, создайте новый файл исходного кода с именем main.lisp и введите в него следующий код.

Live Demo

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

Когда вы выполняете код, он возвращает следующий результат —