convert 包

介绍

主要提供从字符串转到特定类型的 Convert 系列函数。

主要接口

interface Parsable

public interface Parsable<T> {
    static func parse(value: String): T
    static func tryParse(value: String): Option<T>
}

此接口主要提供统一的抽象,以支持字符串中的特定类型的解析

func parse

static func parse(value: String): T

功能:提供一个抽象函数,以支持从字符串中解析特定类型。

参数:

  • value:待解析的字符串

返回值:转换后的值

func tryParse

static func tryParse(value: String): Option<T>

功能:提供一个抽象函数,以支持从字符串中解析特定类型。

参数:

  • value:待解析的字符串

返回值:转换后值,转换失败返回 Option<T>.None

extend Bool <: Parsable

extend Bool <: Parsable<Bool>

此扩展主要用于实现将 Bool 类型字面量的字符串转换为 Bool 值的相关操作函数。

扩展的主要函数如下所示:

func parse

public static func parse(data: String): Bool

功能:将 Bool 类型字面量的字符串转换为 Bool 值。

参数:

  • data:要转换的字符串

返回值:返回转换后 Bool 值

异常:

  • IllegalArgumentException:当字符串为空或转换失败时,抛出异常

func tryParse

public static func tryParse(data: String): Option<Bool>

功能:将 Bool 类型字面量的字符串转换为 Option<Bool> 值。

参数:

  • data:要转换的字符串

返回值:返回转换后 Option<Bool> 值,转换失败返回 Option<Bool>.None

extend Char <: Parsable

extend Char <: Parsable<Char>

此扩展主要用于实现将 Char 类型字面量的字符串转换为 Char 值的相关操作函数。

扩展的主要函数如下所示:

func parse

public static func parse(data: String): Char

功能:将 Char 类型字面量的字符串转换为 Char 值。

参数:

  • data:要转换的字符串

返回值:返回转换后 Char 值

异常:

  • IllegalArgumentException:当字符串为空,或转换失败时,或字符串中含有无效的 UTF-8 字符时,抛出异常

func tryParse

public static func tryParse(data: String): Option<Char>

功能:将 Char 类型字面量的字符串转换为 Option<Char> 值。

参数:

  • data:要转换的字符串

返回值:返回转换后 Option<Char> 值,转换失败返回 Option<Char>.None

异常:

  • IllegalArgumentException:当字符串中含有无效的 UTF-8 字符时,抛出异常

extend Int8 <: Parsable

extend Int8 <: Parsable<Int8>

此扩展主要用于实现将 Int8 类型字面量的字符串转换为 Int8 值的相关操作函数。

扩展的主要函数如下所示:

func parse

public static func parse(data: String): Int8

功能:将 Int8 类型字面量的字符串转换为 Int8 值。

参数:

  • data:要转换的字符串

返回值:返回转换后 Int8 值

异常:

  • IllegalArgumentException:当字符串为空,首位为“+”,转换失败,或转换后超出 Int8 范围,或字符串中含有无效的 UTF-8 字符时,抛出异常

func tryParse

public static func tryParse(data: String): Option<Int8>

功能:将 Int8 类型字面量的字符串转换为 Option<Int8> 值。

参数:

  • data:要转换的字符串

返回值:返回转换后 Option<Int8> 值,转换失败返回 Option<Int8>.None

异常:

  • IllegalArgumentException:当字符串中含有无效的 UTF-8 字符时,抛出异常

extend UInt8 <: Parsable

extend UInt8 <: Parsable<UInt8>

此扩展主要用于实现将 UInt8 类型字面量的字符串转换为 UInt8 值的相关操作函数。

扩展的主要函数如下所示:

func parse

public static func parse(data: String): UInt8

功能:将 UInt8 类型字面量的字符串转换为 UInt8 值。

参数:

  • data:要转换的字符串

返回值:返回转换后 UInt8 值

异常:

  • IllegalArgumentException:当字符串为空,首位为“+”或“-”,转换失败,或转换后超出 UInt8 范围,或字符串中含有无效的 UTF-8 字符时,抛出异常

func tryParse

public static func tryParse(data: String): Option<UInt8>

功能:将 UInt8 类型字面量的字符串转换为 Option<UInt8> 值。

参数:

  • data:要转换的字符串

返回值:返回转换后 Option<UInt8> 值,转换失败返回 Option<UInt8>.None

异常:

  • IllegalArgumentException:当字符串中含有无效的 UTF-8 字符时,抛出异常

extend Int16 <: Parsable

extend Int16 <: Parsable<Int16>

此扩展主要用于实现将 Int16 类型字面量的字符串转换为 Int16 值的相关操作函数。

扩展的主要函数如下所示:

func parse

public static func parse(data: String): Int16

功能:将 Int16 类型字面量的字符串转换为 Int16 值。

参数:

  • data:要转换的字符串

返回值:返回转换后 Int16 值

异常:

  • IllegalArgumentException:当字符串为空,首位为“+”,转换失败,或转换后超出 Int16 范围,或字符串中含有无效的 UTF-8 字符时,抛出异常

func tryParse

public static func tryParse(data: String): Option<Int16>

功能:将 Int16 类型字面量的字符串转换为 Option<Int16> 值。

参数:

  • data:要转换的字符串

返回值:返回转换后 Option<Int16> 值,转换失败返回 Option<Int16>.None

异常:

  • IllegalArgumentException:当字符串中含有无效的 UTF-8 字符时,抛出异常

extend UInt16 <: Parsable

extend UInt16 <: Parsable<UInt16>

此扩展主要用于实现将 UInt16 类型字面量的字符串转换为 UInt16 值的相关操作函数。

扩展的主要函数如下所示:

func parse

public static func parse(data: String): UInt16

功能:将 UInt16 类型字面量的字符串转换为 UInt16 值。

参数:

  • data:要转换的字符串

返回值:返回转换后 UInt16 值

异常:

  • IllegalArgumentException:当字符串为空,首位为“+”或“-”,转换失败,或转换后超出 UInt16 范围,或字符串中含有无效的 UTF-8 字符时,抛出异常

func tryParse

public static func tryParse(data: String): Option<UInt16>

功能:将 UInt16 类型字面量的字符串转换为 Option<UInt16> 值。

参数:

  • data:要转换的字符串

返回值:返回转换后 Option<UInt16> 值,转换失败返回 Option<UInt16>.None

异常:

  • IllegalArgumentException:当字符串中含有无效的 UTF-8 字符时,抛出异常

extend Int32 <: Parsable

extend Int32 <: Parsable<Int32>

此扩展主要用于实现将 Int32 类型字面量的字符串转换为 Int32 值的相关操作函数。

扩展的主要函数如下所示:

func parse

public static func parse(data: String): Int32

功能:将 Int32 类型字面量的字符串转换为 Int32 值。

参数:

  • data:要转换的字符串

返回值:返回转换后 Int32 值

异常:

  • IllegalArgumentException:当字符串为空,首位为“+”,转换失败,或转换后超出 Int32 范围,或字符串中含有无效的 UTF-8 字符时,抛出异常

func tryParse

public static func tryParse(data: String): Option<Int32>

功能:将 Int32 类型字面量的字符串转换为 Option<Int32> 值。

参数:

  • data:要转换的字符串

返回值:返回转换后 Option<Int32> 值,转换失败返回 Option<Int32>.None

异常:

  • IllegalArgumentException:当字符串中含有无效的 UTF-8 字符时,抛出异常

extend UInt32 <: Parsable

extend UInt32 <: Parsable<UInt32>

此扩展主要用于实现将 UInt32 类型字面量的字符串转换为 UInt32 值的相关操作函数。

扩展的主要函数如下所示:

func parse

public static func parse(data: String): UInt32

功能:将 UInt32 类型字面量的字符串转换为 UInt32 值。

参数:

  • data:要转换的字符串

返回值:返回转换后 UInt32 值

异常:

  • IllegalArgumentException:当字符串为空,首位为“+”或“-”,转换失败,或转换后超出 UInt32 范围,或字符串中含有无效的 UTF-8 字符时,抛出异常常

func tryParse

public static func tryParse(data: String): Option<UInt32>

功能:将 UInt32 类型字面量的字符串转换为 Option<UInt32> 值。

参数:

  • data:要转换的字符串

返回值:返回转换后 Option<UInt32> 值,转换失败返回 Option<UInt32>.None

异常:

  • IllegalArgumentException:当字符串中含有无效的 UTF-8 字符时,抛出异常

extend Int64 <: Parsable

extend Int64 <: Parsable<Int64>

此扩展主要用于实现将 Int64 类型字面量的字符串转换为 Int64 值的相关操作函数。

扩展的主要函数如下所示:

func parse

public static func parse(data: String): Int64

功能:将 Int64 类型字面量的字符串转换为 Int64 值。

参数:

  • data:要转换的字符串

返回值:返回转换后 Int64 值

异常:

  • IllegalArgumentException:当字符串为空,首位为“+”,转换失败,或转换后超出 Int64 范围,或字符串中含有无效的 UTF-8 字符时,抛出异常

func tryParse

public static func tryParse(data: String): Option<Int64>

功能:将 Int64 类型字面量的字符串转换为 Option<Int64> 值。

参数:

  • data:要转换的字符串

返回值:返回转换后 Option<Int64> 值,转换失败返回 Option<Int64>.None

异常:

  • IllegalArgumentException:当字符串中含有无效的 UTF-8 字符时,抛出异常

extend UInt64 <: Parsable

extend UInt64 <: Parsable<UInt64>

此扩展主要用于实现将 UInt64 类型字面量的字符串转换为 UInt64 值的相关操作函数。

扩展的主要函数如下所示:

func parse

public static func parse(data: String): UInt64

功能:将 UInt64 类型字面量的字符串转换为 UInt64 值。

参数:

  • data:要转换的字符串

返回值:返回转换后 UInt64 值

异常:

  • IllegalArgumentException:当字符串为空,首位为“+”或“-”,转换失败,或转换后超出 UInt64 范围,或字符串中含有无效的 UTF-8 字符时,抛出异常

func tryParse

public static func tryParse(data: String): Option<UInt64>

功能:将 UInt64 类型字面量的字符串转换为 Option<UInt64> 值。

参数:

  • data:要转换的字符串

返回值:返回转换后 Option<UInt64> 值,转换失败返回 Option<UInt64>.None

异常:

  • IllegalArgumentException:当字符串中含有无效的 UTF-8 字符时,抛出异常

extend Float16 <: Parsable

extend Float16 <: Parsable<Float16>

此扩展主要用于实现将 Float16 类型字面量的字符串转换为 Float16 值的相关操作函数。

扩展的主要函数如下所示:

func parse

public static func parse(data: String): Float16

功能:将 Float16 类型字面量的字符串转换为 Float16 值。

参数:

  • data:要转换的字符串

返回值:返回转换后 Float16 值

异常:

  • IllegalArgumentException:当字符串不符合浮点数语法时,抛出异常

func tryParse

public static func tryParse(data: String): Option<Float16>

功能:将 Float16 类型字面量的字符串转换为 Option<Float16> 值。

参数:

  • data:要转换的字符串

返回值:返回转换后 Option<Float16> 值,转换失败返回 Option<Float16>.None

extend Float32 <: Parsable

extend Float32 <: Parsable<Float32>

此扩展主要用于实现将 Float32 类型字面量的字符串转换为 Float32 值的相关操作函数。

扩展的主要函数如下所示:

func parse

public static func parse(data: String): Float32

功能:将 Float32 类型字面量的字符串转换为 Float32 值。

参数:

  • data:要转换的字符串

返回值:返回转换后 Float32 值

异常:

  • IllegalArgumentException:当字符串不符合浮点数语法时,抛出异常

func tryParse

public static func tryParse(data: String): Option<Float32>

功能:将 Float32 类型字面量的字符串转换为 Option<Float32> 值。

参数:

  • data:要转换的字符串

返回值:返回转换后 Option<Float32> 值,转换失败返回 Option<Float32>.None

extend Float64 <: Parsable

extend Float64 <: Parsable<Float64>

此扩展主要用于实现将 Float64 类型字面量的字符串转换为 Float64 值的相关操作函数。

扩展的主要函数如下所示:

func parse

public static func parse(data: String): Float64

功能:将 Float64 类型字面量的字符串转换为 Float64 值。

参数:

  • data:要转换的字符串

返回值:返回转换后 Float64 值

异常:

  • IllegalArgumentException:当字符串不符合浮点数语法时,抛出异常

func tryParse

public static func tryParse(data: String): Option<Float64>

功能:将 Float64 类型字面量的字符串转换为 Option<Float64> 值。

参数:

  • data:要转换的字符串

返回值:返回转换后 Option<Float64> 值,转换失败返回 Option<Float64>.None

示例

covert 包使用示例

代码如下:

from std import convert.*

main():Int64 {
    var strBool_parse : String = "true"
    var strBool_tryParse : String = "false"
    var strChar_parse : String = "'a'"
    var strChar_tryParse : String = "'\\u{00e2}'"
    var strInt8_parse : String = "-128"
    var strInt8_tryParse : String = "127"
    var strInt16_parse : String = "-32768"
    var strInt16_tryParse : String = "32767"
    var strInt32_parse : String = "-2147483648"
    var strInt32_tryParse : String = "2147483647"
    var strInt64_parse : String = "-9223372036854775808"
    var strInt64_tryParse : String = "9223372036854775807"
    var strFloat16_parse : String = "-65504.0"
    var strFloat16_tryParse : String = "65504.0"
    var strFloat32_parse : String = "-3.14159"
    var strFloat32_tryParse : String = "3.14159"
    var strFloat64_parse : String = "-3.1415926"
    var strFloat64_tryParse : String = "3.1415926"
    var strUInt8_parse : String = "255"
    var strUInt8_tryParse : String = "255"
    var strUInt16_parse : String = "65535"
    var strUInt16_tryParse : String = "65535"
    var strUInt32_parse : String = "4294967295"
    var strUInt32_tryParse : String = "4294967295"
    var strUInt64_parse : String = "18446744073709551615"
    var strUInt64_tryParse : String = "18446744073709551615"

    println("After the conversion of parse, \"true\" became ${Bool.parse(strBool_parse)}")
    println("After the conversion of tryParse, \"false\" became ${Bool.tryParse(strBool_tryParse)}")

    println("After the conversion of parse, \"'a'\" became ${Char.parse(strChar_parse)}")
    println("After the conversion of tryParse, \"'\\u{00e2}'\" became ${Char.tryParse(strChar_tryParse)}")

    println("After the conversion of parse, \"-128\" became ${Int8.parse(strInt8_parse)}")
    println("After the conversion of tryParse, \"127\" became ${Int8.tryParse(strInt8_tryParse)}")

    println("After the conversion of parse, \"-32768\" became ${Int16.parse(strInt16_parse)}")
    println("After the conversion of tryParse, \"32767\" became ${Int16.tryParse(strInt16_tryParse)}")

    println("After the conversion of parse, \"-2147483648\" became ${Int32.parse(strInt32_parse)}")
    println("After the conversion of tryParse, \"2147483647\" became ${Int32.tryParse(strInt32_tryParse)}")

    println("After the conversion of parse, \"-9223372036854775808\" became ${Int64.parse(strInt64_parse)}")
    println("After the conversion of tryParse, \"9223372036854775807\" became ${Int64.tryParse(strInt64_tryParse)}")

    println("After the conversion of parse, \"-65504.0\" became ${Float16.parse(strFloat16_parse)}")
    println("After the conversion of tryParse, \"65504.0\" became ${Float16.tryParse(strFloat16_tryParse)}")

    println("After the conversion of parse, \"-3.14159\" became ${Float32.parse(strFloat32_parse)}")
    println("After the conversion of tryParse, \"3.14159\" became ${Float32.tryParse(strFloat32_tryParse)}")

    println("After the conversion of parse, \"-3.1415926\" became ${Float64.parse(strFloat64_parse)}")
    println("After the conversion of tryParse, \"3.1415926\" became ${Float64.tryParse(strFloat64_tryParse)}")

    println("After the conversion of parse, \"255\" became ${UInt8.parse(strUInt8_parse)}")
    println("After the conversion of tryParse, \"255\" became ${UInt8.tryParse(strUInt8_tryParse)}")

    println("After the conversion of parse, \"65535\" became ${UInt16.parse(strUInt16_parse)}")
    println("After the conversion of tryParse, \"65535\" became ${UInt16.tryParse(strUInt16_tryParse)}")

    println("After the conversion of parse, \"4294967295\" became ${UInt32.parse(strUInt32_parse)}")
    println("After the conversion of tryParse, \"4294967295\" became ${UInt32.tryParse(strUInt32_tryParse)}")

    println("After the conversion of parse, \"18446744073709551615\" became ${UInt64.parse(strUInt64_parse)}")
    println("After the conversion of tryParse, \"18446744073709551615\" became ${UInt64.tryParse(strUInt64_tryParse)}")
    return 0
}

运行结果如下:

After the conversion of parse, "true" became true
After the conversion of tryParse, "false" became Some(false)
After the conversion of parse, "'a'" became a
After the conversion of tryParse, "'\u{00e2}'" became Some(â)
After the conversion of parse, "-128" became -128
After the conversion of tryParse, "127" became Some(127)
After the conversion of parse, "-32768" became -32768
After the conversion of tryParse, "32767" became Some(32767)
After the conversion of parse, "-2147483648" became -2147483648
After the conversion of tryParse, "2147483647" became Some(2147483647)
After the conversion of parse, "-9223372036854775808" became -9223372036854775808
After the conversion of tryParse, "9223372036854775807" became Some(9223372036854775807)
After the conversion of parse, "-65504.0" became -65504.000000
After the conversion of tryParse, "65504.0" became Some(65504.000000)
After the conversion of parse, "-3.14159" became -3.141590
After the conversion of tryParse, "3.14159" became Some(3.141590)
After the conversion of parse, "-3.1415926" became -3.141593
After the conversion of tryParse, "3.1415926" became Some(3.141593)
After the conversion of parse, "255" became 255
After the conversion of tryParse, "255" became Some(255)
After the conversion of parse, "65535" became 65535
After the conversion of tryParse, "65535" became Some(65535)
After the conversion of parse, "4294967295" became 4294967295
After the conversion of tryParse, "4294967295" became Some(4294967295)
After the conversion of parse, "18446744073709551615" became 18446744073709551615
After the conversion of tryParse, "18446744073709551615" became Some(18446744073709551615)