Строки в Common Lisp являются векторами, то есть одномерным массивом символов.
Строковые литералы заключены в двойные кавычки. Любой символ, поддерживаемый набором символов, может быть заключен в двойные кавычки для создания строки, кроме символа двойной кавычки («) и escape-символа (\). Однако их можно включить, экранируя их обратной косой чертой (\).
пример
Создайте новый файл исходного кода с именем main.lisp и введите в него следующий код.
(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 и введите в него следующий код.
; 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 и введите в него следующий код.
(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 и введите в него следующий код.
(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 и введите в него следующий код.
(write (length "Hello World")) (terpri) (write-line (subseq "Hello World" 6)) (write (char "Hello World" 6))
Когда вы выполняете код, он возвращает следующий результат —
11 World #\W
Сортировка и объединение строк
Функция сортировки позволяет сортировать строку. Он принимает последовательность (вектор или строку) и предикат с двумя аргументами и возвращает отсортированную версию последовательности.
Функция слияния принимает две последовательности и предикат и возвращает последовательность, созданную путем слияния двух последовательностей, в соответствии с предикатом.
пример
Создайте новый файл исходного кода с именем main.lisp и введите в него следующий код.
;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 и введите в него следующий код.
(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 и введите в него следующий код.
(write-line (concatenate 'string "Are we not drawn onward, " "we few, drawn onward to new era"))
Когда вы выполняете код, он возвращает следующий результат —