npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

k-language.js

v1.0.1

Published

한글을 간편하게 다룰 수 있도록 도와주는 자바스크립트 / 타입스크립트 라이브러리

Readme

K-Language.js

KING-Sejong

한글을 간편하게 다룰 수 있는 자바스크립트 / 타입스크립트 라이브러리.


사용법

nodejs

const klng = require("K-Language.js");

TypeScript

import klng from "K-Language.js";

josa

| 매개변수 명 | 타입 | 옵션 | 설명 | |--- |--- |--- |--- | | str | string | - | 가장 마지막 글자를 기준으로 조사를 반환하게 됩니다. | | postposition | JosaTypes | - | 이 매개변수를 기준으로 조사를 반환합니다. | | option | { preserve?: boolean } | true | preserve를 true로 해 놓은 경우, 위 str에 넘겨준 글자를 조사와 함께 반환합니다.기본값은 false입니다. |

type JosaTypes = "와/과" | "을/를" | "이/가" | "으/로" | "은/는" | "아/야" | "이나" | "이란" | "이든가" | "이든지" | "이나마" | "이네";

조사만 반환하기

let test = josa("스마트폰", "을/를");
console.log(test); // "을"

조사와 글자를 함께 반환하기

let test = josa("스마트폰", "을/를", { preserve: true });
console.log(test) // "스마트폰을"

isHangul

| 매개변수 명 | 타입 | 옵션 | 설명 | |--- |--- |--- |--- | | str | string | - | 기준이 될 글자를 넣어줍니다. | | option | HangulOptions | true | 기본 값은 모두 false입니다.percent: 한글이 차지하는 비율을 반환toArray: 각 글자의 한글 여부를 판별하여 boolean[]으로 반환onlyCombined: 조합된 한글만을 한글이라고 판별removeSpace: 글자의 모든 공백을 제거한 뒤 판별 |

interface HangulOptions {
  percent?: boolean;
  toArray?: boolean;
  onlyCombined?: boolean;
  removeSpace?: boolean;
}

글자가 모두 한글인지 판별하기

let test1 = isHangul("세종대왕");
console.log(test1); // true

let test2 = isHangul("나는 철수");
console.log(test2); // false

let test3 = isHangul("나는Jane");
console.log(test2); // false

아무런 옵션을 주지 않으면, 매개변수로 넘겨준 글자 전체가 한글인지 판별 하여 값을 반환합니다.
공백 또한 한글이 아니기에 false를 반환합니다.

공백을 제거하고 한글인지 판별하기

let test = isHangul("나는 철수", { removeSpace: true });
console.log(test); // true

removeSpacetrue로 설정하면 모든 공백을 제거한 뒤 판별한 값을 반환합니다.

글자 중 한글인 글자의 비율 알아내기

let test = isHangul("나는 Jane이라고 해.", { percent: true });
console.log(test); // 46.15384615384615

percenttrue로 설정하면 매개변수로 넘겨준 글자 중 한글인 글자의 비율을 반환합니다. removeSpace와 동시에 사용할 수 있습니다.

각 글자의 한글 여부 판별하기

let test = isHangul("abc가나다", { toArray: true });
console.log(test); // [false, false, false, true, true, true]

toArraytrue로 설정하면 매개변수로 넘겨준 글자 모두를 판별하여 배열로 반환합니다. removeSpace와 동시에 사용할 수 있습니다.

조합된 한글만 판별하기

let test1 = isHangul("ㄱㄴㄷ");
console.log(test1); // true

let test2 = isHangul("ㄱㄴㄷ", { onlyCombined: true });
console.log(test2); // false

onlyCombinedtrue로 설정하면 완전히 조합된 한글(가-힣)만을 판별하여 값을 반환합니다. 위 옵션들과 동시에 사용할 수 있습니다.


hasJongSeong

| 매개변수 명 | 타입 | 옵션 | 설명 | |--- |--- |--- |--- | | str | string | - | 매개변수로 주어진 글자를 기준으로 종성이 있는지 없는지 판단합니다. | | option | { toArray?: boolean } | true | 기본 값은 false입니다.toArray: 각 글자의 종성 여부를 판별하여 boolean[]으로 반환 |

마지막 글자의 종성 여부 판별하기

let test = hasJongSeong("배고파");
console.log(test); // false

아무런 옵션도 주어지지 않은 경우, 가장 마지막 글자의 종성 여부만을 판단합니다.

모든 글자의 종성 여부 판별하기

let test = hasJongSeong("피자먹어야징", { toArray: true });
console.log(test); // [false, false, true, false, false, true]

toArraytrue로 설정하면 매개변수로 넘겨준 글자 모두를 판별하여 배열로 반환합니다.


getSyllable

| 매개변수 명 | 타입 | 옵션 | 설명 | |--- |--- |--- |--- | | str | string | - | 기준이 될 글자를 넣어줍니다. | | option | SyllableOptions | true | syllable: "초성"을 택하는 경우 str에서 초성만을, "중성"을 택하는 경우 중성만을, "종성"을 택하는 경우 종성만을, "모두"를 택하는 경우 각 글자의 초・중・종성을 분리하여 반환 (기본 값 "모두")toSeparateArray: 모든 글자를 하나의 배열로 반환 (기본 값 false)includeOtherLng: 한글이 아닌 글자도 반환 (기본 값 false)removeSpace: 글자의 모든 공백을 제거한 뒤 값을 반환 (기본 값 false) |

interface SyllableOptions {
  syllable?: "초성" | "중성" | "종성" | "모두";
  toSeparateArray?: boolean;
  includeOtherLng?: boolean;
  removeSpace?: boolean;
}

초성만 가져오기

let test = getSyllable("집가고싶다", { syllable: "초성", toSeparateArray: true });
console.log(test); // ["ㅈ", "ㄱ", "ㄱ", "ㅅ", "ㄷ"]

초성만 가져올 때 toSeparateArrayfalse로 할 경우, 각 글자 별로 배열이 분리되어 [["ㅈ"], ["ㄱ"], ["ㄱ"], ["ㅅ"], ["ㄷ"]]와 같이 반환되니 주의하여야 합니다.

한글이 아닌 문자를 포함한 초성만 가져오기

let test = getSyllable("abc가나다", { syllable: "초성", toSeparateArray: true, includeOtherLng: true });
console.log(test); // ["a", "b", "c", "ㄱ", "ㄴ", "ㄷ"]

includeOtherLngtrue로 한 경우, 한글이 아닌 모든 문자는 원본이 반환됩니다.

띄어쓰기를 제외한 초성만 가져오기

let test = getSyllable("일 안하고 놀고 싶다...", { syllable: "초성", toSeparateArray: true, includeOtherLng: true, removeSpace: true });
console.log(test); // ["ㅇ", "ㅇ", "ㅎ", "ㄱ", "ㄴ", "ㄱ", "ㅅ", "ㄷ", ".", ".", "."]

removeSpacetrue로 한 경우, 매개변수로 넘겨 준 모든 글자의 공백을 제거한 뒤 결과 값을 반환합니다.
여기서 추가로 공백은 한글이 아닙니다. 즉, 모든 글자가 한글이거나 한글을 제외한 문자가 필요 없을 경우에는 includeOtherLngfalse로 하여 공백을 포함한 한글이 아닌 문자 모두를 제외시킬 수 있습니다.

모든 문자의 초・중・종성 가져오기

// syllable의 기본 값은 "모두"라서, 모든 문자를 분리하는 경우 별도로 설정할 필요 없음
let test = getSyllable("종강하고 싶다");
console.log(test); // [["ㅈ", "ㅗ", "ㅇ"], ["ㄱ", "ㅏ", "ㅇ"], ["ㅎ", "ㅏ"], ["ㄱ", "ㅗ"], [" "], ["ㅅ", "ㅣ", "ㅍ"], ["ㄷ", "ㅏ"]]

여기서 removeSpace가 주어지지 않았기에 공백 또한 하나의 글자로 처리되어 별도의 배열로 존재하는 것을 보실 수 있습니다.

let test = getSyllable("종강하고 싶다", { removeSpace: true });
console.log(test); // [["ㅈ", "ㅗ", "ㅇ"], ["ㄱ", "ㅏ", "ㅇ"], ["ㅎ", "ㅏ"], ["ㄱ", "ㅗ"], ["ㅅ", "ㅣ", "ㅍ"], ["ㄷ", "ㅏ"]]

removeSpacetrue로 설정하면 공백을 제거한 뒤 결과 값이 반환됩니다.

let test = getSyllable("종강하고 싶다", { toSeparateArray: true, removeSpace: true });
console.log(test); // ["ㅈ", "ㅗ", "ㅇ", "ㄱ", "ㅏ", "ㅇ", "ㅎ", "ㅏ", "ㄱ", "ㅗ", "ㅅ", "ㅣ", "ㅍ", "ㄷ", "ㅏ"]

toSeparateArraytrue로 설정하면 모든 글자가 하나의 배열로 합쳐져서 반환됩니다.


getAssembles

| 매개변수 명 | 타입 | 옵션 | 설명 | |--- |--- |--- |--- | | str | string | - | 기준이 될 글자를 넣어줍니다. | | option | AssemblesOptions | true | 기본 값은 모두 false입니다.includeOtherLng: 한글이 아닌 글자도 반환toString: string 형식으로 합쳐진 한글을 반환 |

interface AssemblesOptions {
  toString?: boolean;
  includeOtherLng?: boolean;
}

나눠진 한글을 이어붙이기

let test = getAssembles(["ㅈ", "ㅗ", "ㄹ", "ㄹ", "ㅕ"]);
console.log(test); // ["졸", "려"]

이어붙인 값을 문자열 형식으로 받기

let test = getAssembles(["ㅂ", "ㅏ", "ㅂ", "ㅈ", "ㅜ", "ㅓ"], { toString: true });
console.log(test); // "밥줘"

주의점

getSyllable()과 반대되는 개념의 함수가 아닙니다.
두벌식 키보드를 기준으로 하여 나눠진 한글을 이어붙이는 방식이므로 아래와 같이 작동합니다.

let syllables = getSyllable("탖ㅏ", { toSeparateArray: true });
// ["ㅌ", "ㅏ", "ㅈ", "ㅏ"]

let assemble = getAssembles(syllables, { toString: true });
console.log(assemble); // "타자"

search

| 매개변수 명 | 타입 | 옵션 | 설명 | |--- |--- |--- |--- | | str | string | - | 기준 값이 해당 매개 변수에 포함되는지 판별합니다. | | criteria | string | - | 여기에 들어가는 값이 기준 값이 됩니다. |

특정 글자가 포함됐는지 확인하기

let test1 = search("안녕하세요", "안녕");
console.log(test1); // true

let test2 = search("안녕하세요", "잘가");
console.log(test2); // false

searchIndex

| 매개변수 명 | 타입 | 옵션 | 설명 | |--- |--- |--- |--- | | str | string | - | 기준 값이 해당 매개 변수에 포함되는지 판별합니다. | | criteria | string | - | 여기에 들어가는 값이 기준 값이 됩니다. |

search()와의 차이점

search()함수는 기준 값이 포함되는지의 여부만을 판별하여 참과 거짓으로 반환하지만, searchIndex()는 기준 값이 몇 번 인덱스에 포함되는지를 모두 반환합니다.
특히, 글자를 강조하여 표시할 때 도움이 될 수 있을 것입니다.

기준 값의 인덱스 확인하기

let test1 = search("안녕! 모두 안녕!", "안녕");
console.log(test1); // [[0, 1], [7, 8]]

let test2 = search("안녕! 모두 안녕!", "잘가");
console.log(test2); // []

기준 값이 포함되어 있지 않다면 빈 배열을 반환합니다.


getKoreanNumber

| 매개변수 명 | 타입 | 옵션 | 설명 | |--- |--- |--- |--- | | num | number | - | 매개변수로 주어진 글자가 각각 초, 중, 종성이 가능한지 판별합니다. | | option | KoreanNumberOptions | true | 기본 값은 모두 false입니다.markOne: 일(1) 표기를 반영numeral: 100 미만의 수는 한국식 서수로 반환removeSpace: 결과 값의 공백을 모두 제거하여 반환toString: 결과 값을 string 형식으로 반환 |

interface KoreanNumberOptions {
  markOne?: boolean;
  numeral?: boolean;
  removeSpace?: boolean;
  toString: true
}

한국식 숫자 읽기 (기본)

let test = getKoreanNumber(1234);
console.log(test); // ["천 이백 삼십 사"]

한국식 숫자 읽기 (한국 서수)

let test = getKoreanNumber(1234, { numeral: true });
console.log(test); // ["천 이백 서른 넷"]

numeraltrue로 설정하면 100 미만의 수는 한국식 서수를 사용하여 값을 반환합니다.
매개변수로 넘겨 준 숫자가 100 이상인 경우, 100을 초과하는 숫자는 한자식(일, 이, 삼...)으로 반환합니다.

일(1) 표기 반영하기

let test1 = getKoreanNumber(1234, { markOne: true });
console.log(test1); // ["일천 이백 삼십 사"]

let test2 = getKoreanNumber(11111, { markOne: true });
console.log(test2); // ["일만 일천 일백 십 일"]

markOnetrue로 설정하면 일(1) 표기를 반영하여 값을 반환합니다.
단, 십의 자리에서는 일(1) 표기가 반영되지 않습니다.

결과를 문자열 형식으로 받기

let test = getKoreanNumber(1234, { toString: true });
console.log(test); // "천 이백 삼십 사"

toStringtrue로 설정하면 결과 값을 문자열 형식으로 반환합니다.

결과를 문자열 형식 및 공백을 제거하여 받기

let test = getKoreanNumber(1234, { removeSpace: true, toString: true });
console.log(test); // "천이백삼십사"

removeSpacetrue로 설정하면 결과 값에서 공백을 제거한 뒤 반환합니다.
금액의 표기 등에 유용하게 쓰일 수 있습니다.


isChoAble, isJungAble, isJongAble

각각 매개변수로 넘겨 준 글자의 초, 중, 종성 여부를 판별하는 함수입니다.
| 매개변수 명 | 타입 | 옵션 | 설명 | |--- |--- |--- |--- | | str | string | - | 매개변수로 주어진 글자가 각각 초, 중, 종성이 가능한지 판별합니다. | | option | { toArray?: boolean } | true | 기본 값은 false입니다.toArray: 각 글자의 초, 중, 종성 가능 여부를 판별하여 boolean[]으로 반환 |

초성이 가능한지 알아보기

let test = isChoAble("ㄱ");
console.log(test); // true

모든 글자의 중성 가능 여부 알아보기

let test = isJungAble("ㄱㅏㄴㅏㄷㅏ", { toArray: true });
console.log(test); // [false, true, false, true, false, true]

isConsonant, isVowel

각각 매개변수로 넘겨 준 글자가 자음 또는 모음으로 쓰일 수 있는지 판별하는 함수입니다. | 매개변수 명 | 타입 | 옵션 | 설명 | |--- |--- |--- |--- | | str | string | - | 매개변수로 주어진 글자가 각각 자음 또는 모음이 가능한 지 판별합니다. | | option | { percent?: boolean, toArray?: boolean } | true | 기본 값은 모두 false입니다.percent: 자음 또는 모음이 차지하는 비율을 반환toArray: 각 글자의 자음 또는 모음 여부를 판별하여 boolean[]으로 반환 |

interface CVOptions {
  percent?: boolean;
  toArray?: boolean;
}

자음 여부 판별

let test = isConsonant("ㄱ");
console.log(test); // true

모음이 차지하는 비율 판별

let test = isVowel("ㄱㅏㄴㅏㄷㅏ", { percent: true });
console.log(test); // 50