escape
quoteStr
quoteStr
은 문자열을 따옴표로 묶는 함수입니다. 편의상 빈 문자열도 따옴표로 묶습니다.
import
import { quoteStr } from "@tai-kun/surrealdb/utils";
사용법
function quoteStr(str: string): string;
문자열을 따옴표("
또는 '
)로 묶습니다.
인수
str
따옴표로 묶을 문자열입니다.
반환값
따옴표로 묶인 문자열을 반환합니다. 사용할 따옴표는 주어진 문자열에 작은 따옴표('
)가 포함되어 있는지 여부에 따라 달라집니다.
- 주어진 문자열이 비어있는 경우
''
을 반환합니다.
- 주어진 문자열에 작은 따옴표가 포함되어 있지 않은 경우
- 작은 따옴표로 묶습니다.
- 주어진 문자열에 작은 따옴표가 포함되어 있는 경우
- 큰 따옴표로 묶습니다.
- 주어진 문자열에 작은 따옴표와 큰 따옴표 모두 포함되어 있는 경우
- 큰 따옴표로 묶습니다.
- 큰 따옴표는 백슬래시(
\
)로 이스케이프합니다.
예시
다음 예시에서는 작은 따옴표가 포함되어 있지 않은 문자열을 작은 따옴표로 묶습니다.
import { quoteStr } from "@tai-kun/surrealdb/utils";
console.log(quoteStr(``));console.log(quoteStr(`a`));console.log(quoteStr(`𩸽`));console.log(quoteStr(`👍🏽`));console.log(quoteStr(`パ`));
출력:
'''a''𩸽''👍🏽''パ'
다음 예시에서는 작은 따옴표가 포함되어 있는 문자열을 큰 따옴표로 묶습니다.
import { quoteStr } from "@tai-kun/surrealdb/utils";
console.log(quoteStr(`cat's`));console.log(quoteStr(`𩸽's`));console.log(quoteStr(`'👍🏽`));console.log(quoteStr(`'パ`));
출력:
"cat's""𩸽's""'👍🏽""'パ"
다음 예시에서는 작은 따옴표와 큰 따옴표 모두 포함되어 있는 문자열을 큰 따옴표로 묶고, 필요하다면 이스케이프합니다.
import { quoteStr } from "@tai-kun/surrealdb/utils";
console.log(quoteStr(`cat's "toy"`));console.log(quoteStr(`'\\"\\`));console.log(quoteStr(`𩸽's "feed"`));console.log(quoteStr(`'👍🏽"`));console.log(quoteStr(`'パ"`));
출력:
"cat's \"toy\"""'\\\"\\""𩸽's \"feed\"""'👍🏽\"""'パ\""
escapeKey
escapeKey
는 quoteStr
과 비슷하지만, 객체의 키에 사용하는 함수입니다. 편의상 빈 문자열도 따옴표로 묶습니다.
import
import { escapeKey } from "@tai-kun/surrealdb/utils";
사용법
function escapeKey(key: string): string;
인수
key
객체의 키입니다.
반환값
이스케이프된 문자열을 반환합니다. 필요에 따라 큰 따옴표로 묶습니다.
- 주어진 문자열이 비어있는 경우
""
을 반환합니다.
- 주어진 문자열이 숫자로 시작하지 않고, 영숫자와 언더스코어(_)만으로 구성된 경우
- 그대로 반환합니다.
- 주어진 문자열에 큰 따옴표가 포함되어 있는 경우
- 이스케이프합니다.
- 주어진 문자열에 백슬래시(
\
)가 포함되어 있는 경우- 이스케이프합니다.
- 주어진 문자열이 숫자로 시작하거나, 영숫자와 언더스코어(_) 이외의 문자가 포함되어 있는 경우
- 큰 따옴표로 묶습니다.
예시
다음 예시에서는 문자열이 영숫자와 언더스코어(_)만으로 구성되어 있으므로, 그대로 문자열을 얻습니다.
import { escapeKey } from "@tai-kun/surrealdb/utils";
console.log(escapeKey(`foo_bar`));
출력:
foo_bar
다음 예시에서는 문자열을 큰 따옴표로 묶고, 필요하다면 이스케이프합니다.
import { escapeKey } from "@tai-kun/surrealdb/utils";
console.log(escapeKey(``));console.log(escapeKey(`123`));console.log(escapeKey(`foo-bar`));console.log(escapeKey(`'\\"\\`));console.log(escapeKey(`𩸽's "feed"`));console.log(escapeKey(`'👍🏽"`));console.log(escapeKey(`'パ"`));
출력:
"""123""foo-bar""'\\"\""𩸽's \"feed\"""'👍🏽\"""'パ\""
escapeRid
escapeRid
는 quoteStr
과 비슷하지만, 레코드 ID에 사용하는 함수입니다. 편의상 빈 문자열도 따옴표로 묶습니다.
import
import { escapeRid } from "@tai-kun/surrealdb/utils";
사용법
function escapeRid(rid: string): string;
인수
rid
레코드 ID의 ID 부분입니다.
반환값
이스케이프된 문자열을 반환합니다. 필요에 따라 괄호(⟨⟩
)로 묶습니다.
- 주어진 문자열이 비어있는 경우
⟨⟩
을 반환합니다.
- 주어진 문자열이 숫자로 시작하지 않고, 영숫자와 언더스코어(_)만으로 구성된 경우
- 그대로 반환합니다.
- 주어진 문자열에 괄호(
⟩
)가 포함되어 있는 경우- 이스케이프합니다.
- 주어진 문자열이 모두 숫자로 구성되어 있거나, 영숫자와 언더스코어(_) 이외의 문자가 포함되어 있는 경우
- 괄호(
⟨⟩
)로 묶습니다.
- 괄호(
예시
다음 예시에서는 문자열이 숫자로 시작하지 않고, 영숫자와 언더스코어(_)만으로 구성되어 있으므로, 그대로 문자열을 얻습니다.
import { escapeRid } from "@tai-kun/surrealdb/utils";
console.log(escapeRid(`foo_123`));
출력:
foo_123
다음 예시에서는 문자열을 괄호(⟨⟩
)로 묶고, 필요하다면 이스케이프합니다.
import { escapeRid } from "@tai-kun/surrealdb/utils";
console.log(escapeRid(``));console.log(escapeRid(`123`));console.log(escapeRid(`foo-bar`));console.log(escapeRid(`𩸽's ⟨feed⟩`));console.log(escapeRid(`'👍🏽⟩`));console.log(escapeRid(`'パ⟩`));
출력:
⟨⟩⟨123⟩⟨foo-bar⟩⟨𩸽's ⟨feed\⟩⟩⟨'👍🏽\⟩⟩⟨'パ\⟩⟩
escapeIdent
escapeIdent
는 quoteStr
과 비슷하지만, 네임스페이스, 데이터베이스, 테이블, 필드의 이름에 사용하는 함수입니다. 편의상 빈 문자열도 따옴표로 묶습니다.
import
import { escapeIdent } from "@tai-kun/surrealdb/utils";
사용법
function escapeIdent(ident: string): string;
인수
ident
식별자입니다.
반환값
이스케이프된 문자열을 반환합니다. 필요에 따라 백틱(`
)으로 묶습니다.
- 주어진 문자열이 비어있는 경우
- 주어진 문자열이 숫자로 시작하지 않고, 영숫자와 언더스코어(_)만으로 구성된 경우
- 그대로 반환합니다.
- 주어진 문자열에 백틱(
`
)이 포함되어 있는 경우- 이스케이프합니다.
- 주어진 문자열이 숫자로 시작하거나, 영숫자와 언더스코어(_) 이외의 문자가 포함되어 있는 경우
- 백틱(
`
)으로 묶습니다.
- 백틱(
예시
다음 예시에서는 문자열이 숫자로 시작하지 않고, 영숫자와 언더스코어(_)만으로 구성되어 있으므로, 그대로 문자열을 얻습니다.
import { escapeIdent } from "@tai-kun/surrealdb/utils";
console.log(escapeIdent(`foo_123`));
출력:
foo_123
다음 예시에서는 문자열을 백틱(`
)으로 묶고, 필요하다면 이스케이프합니다.
import { escapeIdent } from "@tai-kun/surrealdb/utils";
console.log(escapeIdent(""));console.log(escapeIdent("123"));console.log(escapeIdent("foo-bar"));console.log(escapeIdent("𩸽's `feed`"));console.log(escapeIdent("'👍🏽`"));console.log(escapeIdent("'パ`"));
출력:
```123``foo-bar``𩸽's \`feed\```'👍🏽\```'パ\``
칼럼
문자열의 길이
앞의 예시에서 사용한 문자열에는 JavaScript에서 본 문자열의 길이와 사람이 보는 문자열의 길이가 다른 문자가 포함되어 있습니다.
종류 | 표시 | .length | Uint8Array |
---|---|---|---|
ASCII | a | 1 | [ 0x61 ] |
서로게이트 쌍 | 𩸽 | 2 | [ 0xF0, 0xA9, 0xB8, 0xBD ] |
변이체 선택자 | 👍🏽 | 4 | [ 0xF0, 0x9F, 0x91, 0x8D, 0xF0, 0x9F, 0x8F, 0xBD ] |
결합 문자 | パ | 2 | [ 0xE3, 0x83, 0x8F, 0xE3, 0x82, 0x9A ] |
.length
값이 직관과 다른 경우, 문자열에 대한 조작을 신중하게 생각해야 합니다.