convert

    这是一个用 Moonbit 编写的类型转换库,提供了将字符串转换为整数、浮点数和布尔值等功能。

    moonbit
    convert
    string
    int
    float
    bool
    Download zip
    Author
    Version
    0.3.2
    License
    Apache-2.0
    Last updated
    last year
    Downloads
    1K

    #amor2025/convert

    这是一个用 Moonbit 编写的类型转换库,提供了将字符串转换为整数、浮点数和布尔值等功能。

    #安装

    moon update moon add amor2025/convert

    #使用


    fn init {
    let int_val = Convert::string_to_int("123")
    println(int_val) // Some(123)

    let double_val = Convert::string_to_double("123.45")
    println(double_val) // Some(123.45)

    let bool_val = Convert::string_to_bool("true")
    println(bool_val) // Some(true)
    }

    #API

    #Convert::string_to_int(str: String) -> Int?

    将字符串转换为整数。如果字符串格式无效,则返回 None

    Convert::string_to_int("123") // Some(123)
    Convert::string_to_int("-123") // Some(-123)
    Convert::string_to_int("123a") // None

    #Convert::string_to_int_truncate(str: String) -> Int?

    将字符串(包括浮点数字符串)转换为整数,小数部分将被截断。如果字符串格式无效,则返回 None

    Convert::string_to_int_truncate("123.45") // Some(123)
    Convert::string_to_int_truncate("-123.99") // Some(-123)

    #Convert::string_to_double(str: String) -> Double?

    将字符串转换为浮点数。支持科学计数法。如果字符串格式无效,则返回 None

    Convert::string_to_double("123.45") // Some(123.45)
    Convert::string_to_double("1.23e4") // Some(12300.0)

    #Convert::string_to_bool(str: String) -> Bool?

    将字符串("true"或"false")转换为布尔值。如果字符串不是"true"或"false"(不区分大小写),则返回 None

    Convert::string_to_bool("true") // Some(true)
    Convert::string_to_bool("FALSE") // Some(false)
    Convert::string_to_bool("other") // None

    #基本类型转字符串

    #Convert::int_to_string(value: Int) -> String

    将整数转换为字符串。

    Convert::int_to_string(123) // "123"
    Convert::int_to_string(-456) // "-456"

    #Convert::double_to_string(value: Double) -> String

    将浮点数转换为字符串。

    Convert::double_to_string(123.45) // "123.45"
    Convert::double_to_string(-67.89) // "-67.89"

    #Convert::bool_to_string(value: Bool) -> String

    将布尔值转换为字符串。

    Convert::bool_to_string(true) // "true"
    Convert::bool_to_string(false) // "false"

    #数值类型转换

    #Convert::int_to_double(value: Int) -> Double

    将整数转换为浮点数。

    Convert::int_to_double(123) // 123.0
    Convert::int_to_double(-456) // -456.0

    #Convert::double_to_int(value: Double) -> Int

    将浮点数转换为整数(截断小数部分)。

    Convert::double_to_int(123.45) // 123
    Convert::double_to_int(-67.89) // -67

    #Convert::double_to_int_round(value: Double) -> Int

    将浮点数转换为整数(四舍五入)。

    Convert::double_to_int_round(123.5) // 124
    Convert::double_to_int_round(-67.5) // -68

    #字符转换

    #Convert::char_to_int(char: Char) -> Int

    将字符转换为其ASCII码值。

    Convert::char_to_int('A') // 65
    Convert::char_to_int('0') // 48

    #Convert::int_to_char(value: Int) -> Char?

    将ASCII码值转换为字符。如果值不在有效范围内(0-127),则返回 None

    Convert::int_to_char(65) // Some('A')
    Convert::int_to_char(48) // Some('0')
    Convert::int_to_char(128) // None

    #字符串和字符数组转换

    #Convert::string_to_chars(str: String) -> Array[Char]

    将字符串转换为字符数组。

    Convert::string_to_chars("Hello") // ['H', 'e', 'l', 'l', 'o']

    #Convert::chars_to_string(chars: Array[Char]) -> String

    将字符数组转换为字符串。

    Convert::chars_to_string(['H', 'e', 'l', 'l', 'o']) // "Hello"

    #进制转换

    #Convert::int_to_hex(value: Int) -> String

    将十进制整数转换为十六进制字符串。

    Convert::int_to_hex(255) // "FF"
    Convert::int_to_hex(16) // "10"
    Convert::int_to_hex(-255) // "-FF"

    #Convert::hex_to_int(hex_str: String) -> Int?

    将十六进制字符串转换为十进制整数。支持可选的"0x"前缀。

    Convert::hex_to_int("FF") // Some(255)
    Convert::hex_to_int("0xFF") // Some(255)
    Convert::hex_to_int("abc") // Some(2748)
    Convert::hex_to_int("XYZ") // None

    #Convert::int_to_binary(value: Int) -> String

    将十进制整数转换为二进制字符串。

    Convert::int_to_binary(8) // "1000"
    Convert::int_to_binary(15) // "1111"
    Convert::int_to_binary(-8) // "-1000"

    #Convert::binary_to_int(binary_str: String) -> Int?

    将二进制字符串转换为十进制整数。支持可选的"0b"前缀。

    Convert::binary_to_int("1000") // Some(8)
    Convert::binary_to_int("0b1111") // Some(15)
    Convert::binary_to_int("102") // None

    #数字转中文大写人民币

    #Convert::to_chinese_currency(amount: Double) -> String

    将数字转换为中文大写人民币金额形式,支持15位以内的整数和小数点后5位。

    参数:
    • amount: 要转换的金额(支持小数)

    返回值: 中文大写人民币金额字符串

    示例:
    // 基本整数
    let result1 = Convert::to_chinese_currency(100.0) // "壹佰元整"
    let result2 = Convert::to_chinese_currency(1000.0) // "壹仟元整"

    // 带小数
    let result3 = Convert::to_chinese_currency(123.45) // "壹佰贰拾叁元肆角伍分"
    let result4 = Convert::to_chinese_currency(0.05) // "伍分"
    let result5 = Convert::to_chinese_currency(10.50) // "壹拾元伍角"

    // 复杂小数(5位小数)
    let result6 = Convert::to_chinese_currency(123.45678) // "壹佰贰拾叁元肆角伍分陆厘柒毫捌丝"
    let result7 = Convert::to_chinese_currency(0.12345) // "壹角贰分叁厘肆毫伍丝"

    // 大数
    let result8 = Convert::to_chinese_currency(12345.0) // "壹万贰仟叁佰肆拾伍元整"
    let result9 = Convert::to_chinese_currency(100000000.0) // "壹亿元整"

    // 负数
    let result10 = Convert::to_chinese_currency(-100.0) // "负壹佰元整"
    let result11 = Convert::to_chinese_currency(-123.45) // "负壹佰贰拾叁元肆角伍分"

    特性:
    • 支持负数转换
    • 支持15位以内的整数
    • 支持小数点后5位(角、分、厘、毫、丝)
    • 自动处理"整"字的添加
    • 智能处理零的显示

    #数字转中文小写

    #Convert::to_chinese_digital(num: Int) -> String

    将整数转换为中文小写形式。

    参数:
    • num:要转换的整数

    返回值: 中文小写数字字符串

    示例:
    Convert::to_chinese_digital(123) // "一百二十三"
    Convert::to_chinese_digital(1001) // "一千零一"
    Convert::to_chinese_digital(-456) // "负四百五十六"

    #Convert::to_chinese_digital_full(amount: Double) -> String

    将数字转换为中文小写形式,支持小数。

    参数:
    • amount:要转换的数字(支持小数)

    返回值: 中文小写数字字符串

    示例:
    Convert::to_chinese_digital_full(134.45) // "一百三十四点四五"
    Convert::to_chinese_digital_full(0.05) // "零点零五"
    Convert::to_chinese_digital_full(-123.4) // "负一百二十三点四"

    特性:
    • 支持负数转换
    • 支持整数和小数转换
    • 智能处理零的显示
    • 自动处理小数点的转换

    str_to_bool

    fn str_to_bool(str : String) -> Bool?

    将布尔值的字符串表示形式转换为 Bool 值。

    参数:

    • str : 要解析为布尔值的字符串。前导和尾随的空白字符(空格、制表符、换行符、回车符)会被自动去除。

    返回值:如果字符串可以成功解析为有效的布尔值,则返回 Some(value);如果字符串无法识别为布尔值表示形式,则返回 None

    示例:

    inspect(@amor2025/convert.str_to_bool("true"), content="Some(true)")
    inspect(@amor2025/convert.str_to_bool("false"), content="Some(false)")
    inspect(@amor2025/convert.str_to_bool(" TRUE "), content="Some(true)")
    inspect(@amor2025/convert.str_to_bool("False"), content="Some(false)")
    inspect(@amor2025/convert.str_to_bool("yes"), content="None")
    inspect(@amor2025/convert.str_to_bool("1"), content="None")

    str_to_double

    fn str_to_double(str : String) -> Double?

    将浮点数的字符串表示形式转换为 Double 值。

    参数:

    • str : 要解析为浮点数的字符串。前导和尾随的空白字符(空格、制表符、换行符、回车符)会被自动去除。

    返回值:如果字符串可以成功解析为有效的浮点数,则返回 Some(value);如果字符串无法识别为浮点数表示形式,则返回 None

    示例:

    inspect(@amor2025/convert.str_to_double("3.14"), content="Some(3.14)")
    inspect(@amor2025/convert.str_to_double("42"), content="Some(42)")
    inspect(@amor2025/convert.str_to_double(" -2.5 "), content="Some(-2.5)")
    inspect(@amor2025/convert.str_to_double("1.23e-4"), content="Some(0.00012299999999999998)")
    inspect(@amor2025/convert.str_to_double("abc"), content="None")
    inspect(@amor2025/convert.str_to_double(""), content="None")

    str_to_int

    fn str_to_int(str : String) -> Int?

    将整数的字符串表示形式转换为 Int 值。

    参数:

    • str : 要解析为整数的字符串。前导和尾随的空白字符(空格、制表符、换行符、回车符)会被自动去除。

    返回值:如果字符串可以成功解析为有效的整数,则返回 Some(value);如果字符串无法识别为整数表示形式,则返回 None

    示例:

    inspect(@amor2025/convert.str_to_int("42"), content="Some(42)")
    inspect(@amor2025/convert.str_to_int("-123"), content="Some(-123)")
    inspect(@amor2025/convert.str_to_int(" 456 "), content="Some(456)")
    inspect(@amor2025/convert.str_to_int("0"), content="Some(0)")
    inspect(@amor2025/convert.str_to_int("abc"), content="None")
    inspect(@amor2025/convert.str_to_int(""), content="None")
    inspect(@amor2025/convert.str_to_int("12.34"), content="None")

    str_to_int_truncate

    fn str_to_int_truncate(str : String) -> Int?

    | 将整数的字符串表示形式转换为 Int 值,自动截断小数部分。

    参数:

    • str : 要解析为整数的字符串。前导和尾随的空白字符(空格、制表符、换行符、回车符)会被自动去除。如果字符串包含小数点,则只考虑小数点前的整数部分。

    返回值:如果字符串可以成功解析为有效的数值(存在小数部分时会截断),则返回 Some(value);如果字符串无法识别为数值表示形式,则返回 None

    示例:

    inspect(@amor2025/convert.str_to_int_truncate("42"), content="Some(42)")
    inspect(@amor2025/convert.str_to_int_truncate("-123"), content="Some(-123)")
    inspect(@amor2025/convert.str_to_int_truncate(" 456 "), content="Some(456)")
    inspect(@amor2025/convert.str_to_int_truncate("12.34"), content="Some(12)")
    inspect(@amor2025/convert.str_to_int_truncate("-5.89"), content="Some(-5)")
    inspect(@amor2025/convert.str_to_int_truncate("0.999"), content="Some(0)")
    inspect(@amor2025/convert.str_to_int_truncate("abc"), content="None")
    inspect(@amor2025/convert.str_to_int_truncate(""), content="None")

    Source Files