Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

https://github.com/dragonteros/kor-to-number.js

한글로 적힌 한국어 수사를 숫자로 변환하는 자바스크립트 라이브러리입니다.
https://github.com/dragonteros/kor-to-number.js

hangeul hangul korean number

Last synced: about 1 month ago
JSON representation

한글로 적힌 한국어 수사를 숫자로 변환하는 자바스크립트 라이브러리입니다.

Lists

README

        

# kor-to-number.js
한글로 적힌 한국어 수사를 숫자로 변환하는 자바스크립트 라이브러리입니다.

## 설치
`npm install kor-to-number`

## 사용법
```javascript
const { extractNumber } = require('kor-to-number');

// 숫자
extractNumber('42'); // [42, '']
extractNumber('36.5도'); // [36.5, '도']

// 한자어 수사
extractNumber('삼백육십오'); // [365, '']
extractNumber('이천이십일년'); // [2021, '년']

// 숫자 혼용
extractNumber('1만2천 봉'); // [12000, '봉']
extractNumber('21억 4748만 3648'); // [2147483648, '']

// 순우리말 수사
extractNumber('아흔아홉'); // [99, '']
extractNumber('스무 날'); // [20, '날']
extractNumber('백한 마리'); // [101, '마리']
```

## API
### `extractNumber(word: string, format?: formatType[]): [number, string]`
문자열의 앞부분에서 한자어 수사, 고유어 수사, 숫자 등이 포함된 부분을 떼어냅니다.

반환값은 해석된 수 및 나머지 부분으로 이루어진 길이 2의 배열입니다.

해석에 실패한 경우 반환값의 첫번째 요소는 `NaN`이 되고 두번째 요소는 입력 문자열이 됩니다.

`format` 배열로 사용할 형식을 지정할 수 있습니다.
`format` 인수를 비워두는 경우 모든 형식을 전부 사용합니다.

#### `type formatType = "숫자" | "숫자혼용" | "한자어" | "순우리말"`
지원되는 형식은 다음과 같습니다.
+ `"숫자"`
* 쉼표로 구분된 인도-아라비아 숫자
- 예: `0.12`, `+12,345,678.900`
* 지수 표기법
- 예: `−1.602e−19`
* `"한자어"`
- 예: 일억 이천삼백사십오만 육천칠백팔십구
+ `"숫자혼용"`
* 십의 자리
- 예: 1억 2천3백4십5만 6천7백8십9
* 만의 자리
- 예: 1억 2345만 6789
+ `"순우리말"`
* 명사
- 예: 하나, 둘, 셋, 열, 스물셋, 천이백서른넷
* 관형사
- 예: 한 명, 열두 명, 백육십세 명

한자어 수사에 부호(`+`, `-`)를 표시하려면 '플러스' 또는 '마이너스'를 앞에 붙입니다.
- 예: 플러스 만 원, 마이너스 삼십 도

### `extractAndProcessNumber(word: string, mapper: Mapper, format?: formatType[]): T | null`
문자열의 앞부분에서 한자어 수사, 고유어 수사, 숫자 등이 포함된 부분과 나머지 부분으로 분리하여 가공합니다.

분석이 성공하면 분석 중간 결과 중 남은 문자열이 가장 짧은 것을 최종 분석으로 채택하고, 그것을 `mapper`로 가공한 결과를 반환합니다.

분석에 실패한 경우는 `null`이 반환됩니다.

#### `type Mapper = (analysis: Analysis) => T | null`
분석 도중에 중간 결과를 보고 가공하거나 기각할 수 있습니다.

가공한 결과는 이 분석이 최종적으로 채택될 경우 반환값으로 사용됩니다.

이 분석을 기각하려면 `null`을 반환합니다. 기각된 분석은 최종 분석으로 채택되지 않습니다.

#### `type Analysis = { consumed: string; parsed: number; rest: string }`
분석 중간 결과입니다. `consumed`는 지금까지 분석한 문자열, `parsed`는 분석 결과, `rest`는 남은 문자열입니다.

## 라이센스
이 라이브러리는 MIT 라이센스 아래 자유롭게 배포 가능합니다.