Tnze / go.num

Go語言實現中文數位的拼寫和解析
12 stars 6 forks source link

feat(StringTraditional, Scan): 增加繁体转换, Scan fix #1

Closed adsian closed 2 years ago

adsian commented 2 years ago

想要支持繁体不应该这样改,应该复制zh目录然后替换里面保存文字的数组

zh_tr

加上了, 不过Scan貌似是有问题的, 先用着吧...

Tnze commented 2 years ago

因为后面的map你没改

adsian commented 2 years ago

因为后面的map你没改

改了, 我是想问一下, main.go里, fmt.Scan(&num)是获取不到zh.Uint64, 还有中文转数字, fmt.Sscan("三百八十六万七千三百五十一", &num)这个也是用不了, func (num *Uint64) Scan(state fmt.ScanState, verb rune) 是怎么运行的

Tnze commented 2 years ago

用不了是什么意思,例子都运行不了吗

adsian commented 2 years ago

是啊, 你试一试 main.go

Tnze commented 2 years ago
package main

import (
    "fmt"
    "github.com/Tnze/go.num/v2/zh"
)

func main() {
    // 中文转数字
    var num zh.Uint64
    _, err := fmt.Sscan("三百八十六万七千三百五十一", &num)
    if err != nil {
        panic(err)
    }

    fmt.Println(uint64(num))
    // Output: 3867351
}

输出:

> go run .\main.go
3867351
Tnze commented 2 years ago
package main

import (
    "fmt"
    "github.com/Tnze/go.num/v2/zh"
)

func main() {
    // 中文转数字
    var num1, num2, num3 zh.Uint64
    _, err := fmt.Sscan("三十四 六十八 二亿九千九百七十九万二千四百五十八", &num1, &num2, &num3)
    if err != nil {
        panic(err)
    }

    fmt.Println(uint64(num1), uint64(num2), uint64(num3))
}

Output:

34 68 299792458

Playground: https://go.dev/play/p/AoH1azGBjfc

Tnze commented 2 years ago

不知道你是哪里遇到有问题