cjk2num

package module
v0.0.0-...-005d508 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 29, 2021 License: MIT Imports: 2 Imported by: 1

README

cjk2num

CircleCI GoDoc

Convert /漢数字|中文数字|한자 숫자/ to number.

ようするに漢数字を数字に変換するやつ。

コマンドとしての使い方

漢数字を引数として渡すと数字に変換してくれる。

$ cjk2num 二百五十一

>251

ライブラリとしての使い方

漢数字をstring型で渡すとint64の数字として返ってくる。

import (
	"github.com/kurehajime/cjk2num"
)
func main(){
  var num int64
  var 漢数字="千二百六十万"
  num, err := cjk2num.Convert(漢数字)
  if err != nil {
    Println(err.Error())
  }
  Println(num)//12600000
}

インストール方法

ここからダウンロード。

またはgo install

go install github.com/kurehajime/cjk2num/cmd/cjk2num@latest

ライブラリとして利用する場合はgo getで。

$ go get -u github.com/kurehajime/cjk2num/...

Documentation

Overview

Package cjk2num : Convert /漢数字|中文数字|한자 숫자/ to number

Example (Case1)

Example 1 千や百と言った記号を用いないパターン

res, _ := Convert("一九八四")
fmt.Printf("%d", res)
Output:

1984
Example (Case2)

Example 2 億や千などの記号を用いるパターン

res, _ := Convert("一億二千三百四十五万六千七百八十九")
fmt.Printf("%d", res)
Output:

123456789
Example (Case3)

Example 3 大字を使ったパターン

res, _ := Convert("壱萬弐千参百")
fmt.Printf("%d", res)
Output:

12300
Example (Case4)

Example 4 〇(れい:まると違う)を含むパターン

res, _ := Convert("一〇九")
fmt.Printf("%d", res)
Output:

109
Example (Case5)

Example 5 中文

res, _ := Convert("壹億貳仟叁佰肆拾伍萬陸仟柒佰捌拾玖")
fmt.Printf("%d", res)
Output:

123456789
Example (Case6)

Example 6 한글

res, _ := Convert("오만육천칠백팔십구")
fmt.Printf("%d", res)
Output:

56789
Example (Case7)

Example 7変則的な単位

res, _ := Convert("3万1ダース")
fmt.Printf("%d", res)
Output:

360012
Example (Case8)

Example 8 オリジナルの桁を定義

presetSymbols := GetPresetSymols()                    //プリセットされた記号定義を取得
originalSymbol := BreakSymbol{"たこ", 8}                //オリジナルの単位を作成
presetSymbols = append(presetSymbols, originalSymbol) //プリセットに加える
res, _ := ConvertBy("10たこ", presetSymbols)
fmt.Printf("%d", res)
Output:

80
Example (Case9)

Example 9 オリジナルの数字を定義

//タミル文字(தமிழ்)
originalSymbols := []Symbol{
	NumberSymbol{"௦", 0},
	NumberSymbol{"௧", 1},
	NumberSymbol{"௨", 2},
	NumberSymbol{"௩", 3},
	NumberSymbol{"௪", 4},
	NumberSymbol{"௫", 5},
	NumberSymbol{"௬", 6},
	NumberSymbol{"௭", 7},
	NumberSymbol{"௮", 8},
	NumberSymbol{"௯", 9},
	NonBreakSymbol{"௰", 10},
	NonBreakSymbol{"௱", 100},
	NonBreakSymbol{"௲", 1000},
}
res, _ := ConvertBy("௫௲௮", originalSymbols)
fmt.Printf("%d", res)
Output:

5008

Index

Examples

Constants

This section is empty.

Variables

This section is empty.

Functions

func Convert

func Convert(word string) (result int64, err error)

Convert /漢数字|中文数字|한자 숫자/ to number------------------

func ConvertBy

func ConvertBy(word string, symbols []Symbol) (result int64, err error)

ConvertBy :オリジナルの桁定義を指定して変換 ------------------

Types

type AllBreakSymbol

type AllBreakSymbol struct {
	// contains filtered or unexported fields
}

AllBreakSymbol ex:ダース...------------------

func (AllBreakSymbol) Calc

func (sym AllBreakSymbol) Calc(stage1, stage2, stage3 int64) (int64, int64, int64, error)

Calc 左端から現在位置までの数字に対し係数をかける

func (AllBreakSymbol) Key

func (sym AllBreakSymbol) Key() string

Key :get key

type BreakSymbol

type BreakSymbol struct {
	// contains filtered or unexported fields
}

BreakSymbol ex:兆億万...------------------

func (BreakSymbol) Calc

func (sym BreakSymbol) Calc(stage1, stage2, stage3 int64) (int64, int64, int64, error)

Calc 直左のBreakSymbolから現在位置までの数字に対し係数をかける

func (BreakSymbol) Key

func (sym BreakSymbol) Key() string

Key :get key

type NonBreakSymbol

type NonBreakSymbol struct {
	// contains filtered or unexported fields
}

NonBreakSymbol ex:千百十...------------------

func (NonBreakSymbol) Calc

func (sym NonBreakSymbol) Calc(stage1, stage2, stage3 int64) (int64, int64, int64, error)

Calc 直左のBreakSymbolから現在位置までの数字に対し係数をかける

func (NonBreakSymbol) Key

func (sym NonBreakSymbol) Key() string

Key :get key

type NumberSymbol

type NumberSymbol struct {
	// contains filtered or unexported fields
}

NumberSymbol ex:一二三壱弐参...------------------

func (NumberSymbol) Calc

func (sym NumberSymbol) Calc(stage1, stage2, stage3 int64) (int64, int64, int64, error)

Calc 直左のNumberSymbolを10倍し係数を足す

func (NumberSymbol) Key

func (sym NumberSymbol) Key() string

Key :get key

type Symbol

type Symbol interface {
	//Key 対象となる文字
	Key() string
	//与えられたパラメータを元に数字や単位を反映させた結果を返す
	Calc(stage1, stage2, stage3 int64) (int64, int64, int64, error)
}

Symbol 数字や単位など有効なすべての文字------------------

func GetPresetSymols

func GetPresetSymols() []Symbol

GetPresetSymols あらかじめ用意されたsymbolを取得

Directories

Path Synopsis
cmd

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL