Skip to content

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

License

Notifications You must be signed in to change notification settings

yakuroot/K-Language.js

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

43 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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