컨텐츠로 건너뛰기

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

escapeKeyquoteStr과 비슷하지만, 객체의 키에 사용하는 함수입니다. 편의상 빈 문자열도 따옴표로 묶습니다.

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

escapeRidquoteStr과 비슷하지만, 레코드 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

escapeIdentquoteStr과 비슷하지만, 네임스페이스, 데이터베이스, 테이블, 필드의 이름에 사용하는 함수입니다. 편의상 빈 문자열도 따옴표로 묶습니다.

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에서 본 문자열의 길이와 사람이 보는 문자열의 길이가 다른 문자가 포함되어 있습니다.

종류표시.lengthUint8Array
ASCIIa1[ 0x61 ]
서로게이트 쌍𩸽2[ 0xF0, 0xA9, 0xB8, 0xBD ]
변이체 선택자👍🏽4[ 0xF0, 0x9F, 0x91, 0x8D, 0xF0, 0x9F, 0x8F, 0xBD ]
결합 문자パ2[ 0xE3, 0x83, 0x8F, 0xE3, 0x82, 0x9A ]

.length 값이 직관과 다른 경우, 문자열에 대한 조작을 신중하게 생각해야 합니다.