LISP-문자열

Common Lisp의 문자열은 벡터, 즉 1 차원 문자 배열입니다.

문자열 리터럴은 큰 따옴표로 묶습니다. 큰 따옴표 문자 ( ")와 이스케이프 문자 (\)를 제외하고 문자 집합에서 지원하는 모든 문자를 큰 따옴표로 묶어 문자열을 만들 수 있습니다. 그러나 백 슬래시 (\)로 이스케이프하여 포함 할 수 있습니다.

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는 코드에서 문자열을 비교하기위한 다른 두 가지 함수 세트를 제공합니다. 한 세트는 대소 문자를 구분하고 다른 세트는 대소 문자를 구분하지 않습니다.

다음 표는 기능을 제공합니다-

대소 문자 구분 함수 대소 문자를 구분하지 않는 함수 기술
문자열 = 문자열 같음 피연산자의 값이 모두 같은지 확인합니다. 그렇다면 조건이 참이됩니다.
문자열 / = 같지 않은 문자열 피연산자의 값이 모두 다른지 확인하고 값이 같지 않으면 조건이 참이됩니다.
문자열 < 끈이없는 피연산자의 값이 단조 감소하는지 확인합니다.
문자열> string-greaterp 피연산자의 값이 단조롭게 증가하는지 확인합니다.
문자열 <= 큰 문자열이 아닌 문자열 왼쪽 피연산자의 값이 다음 오른쪽 피연산자의 값보다 크거나 같은지 확인하고, 그렇다면 조건이 참이됩니다.
문자열> = 끈이없는 왼쪽 피연산자의 값이 오른쪽 피연산자의 값보다 작거나 같은지 확인합니다. 그렇다면 조건이 참이됩니다.

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. 아니. 기능 및 설명
1

string-upcase

문자열을 대문자로 변환합니다.

2

string-downcase

문자열을 소문자로 변환

string-capitalize

문자열의 각 단어를 대문자로 표시

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. 아니. 기능 및 설명
1

string-trim

첫 번째 인수로 문자열을, 두 번째 인수로 문자열을 취하고 첫 번째 인수에있는 모든 문자가 인수 문자열에서 제거 된 부분 문자열을 리턴합니다.

2

String-left-trim

첫 번째 인수로 문자열을, 두 번째 인수로 문자열을 취하고 첫 번째 인수에있는 모든 문자가 인수 문자열의 시작 부분에서 제거되는 부분 문자열을 리턴합니다.

String-right-trim

첫 번째 인수로 문자열 문자를 사용하고 두 번째 인수로 문자열을 취하고 첫 번째 인수에있는 모든 문자가 인수 문자열의 끝에서 제거 된 부분 문자열을 반환합니다.

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 함수를 사용하면 문자열의 개별 문자에 액세스 할 수 있습니다.

Example

main.lisp라는 새 소스 코드 파일을 만들고 그 안에 다음 코드를 입력합니다.

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

코드를 실행하면 다음 결과가 반환됩니다.

11
World
#\W

문자열 정렬 및 병합

그만큼 sort함수는 문자열 정렬을 허용합니다. 시퀀스 (벡터 또는 문자열)와 두 인수 술어를 취하고 정렬 된 시퀀스 버전을 반환합니다.

그만큼 merge 함수는 두 개의 시퀀스와 술어를 취하고 술어에 따라 두 시퀀스를 병합하여 생성 된 시퀀스를 리턴합니다.

Example

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

코드를 실행하면 다음 결과가 반환됩니다.

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