Package strconv

import "strconv"
Overview
Index
Examples

Overview ▾

软件包strconv实现了基本数据类型的字符串表示形式之间的转换.

Numeric Conversions

最常见的数字转换是Atoi(从字符串到int)和Itoa(从int到字符串).

i, err := strconv.Atoi("-42")
s := strconv.Itoa(-42)

它们采用十进制和Go int类型.

ParseBool,ParseFloat,ParseInt和ParseUint将字符串转换为值:

b, err := strconv.ParseBool("true")
f, err := strconv.ParseFloat("3.1415", 64)
i, err := strconv.ParseInt("-42", 10, 64)
u, err := strconv.ParseUint("42", 10, 64)

解析函数返回最宽的类型(float64,int64和uint64),但是如果size参数指定了较窄的宽度,则结果可以转换为该较窄的类型而不会丢失数据:

s := "2147483647" // biggest int32
i64, err := strconv.ParseInt(s, 10, 32)
...
i := int32(i64)

FormatBool,FormatFloat,FormatInt和FormatUint将值转换为字符串:

s := strconv.FormatBool(true)
s := strconv.FormatFloat(3.1415, 'E', -1, 64)
s := strconv.FormatInt(-42, 16)
s := strconv.FormatUint(42, 16)

AppendBool,AppendFloat,AppendInt和AppendUint相似,但是将格式化后的值附加到目标切片.

String Conversions

Quote和QuoteToASCII将字符串转换为带引号的Go字符串文字. 后者通过使用\ u转义任何非ASCII Unicode来保证结果是ASCII字符串:

q := strconv.Quote("Hello, 世界")
q := strconv.QuoteToASCII("Hello, 世界")

QuoteRune和QuoteRuneToASCII类似,但接受符文并返回加引号的Go符文文字.

Unquote和UnquoteChar unquote Go字符串和符文文字.

Index ▾

Constants
Variables
func AppendBool(dst []byte, b bool) []byte
func AppendFloat(dst []byte, f float64, fmt byte, prec, bitSize int) []byte
func AppendInt(dst []byte, i int64, base int) []byte
func AppendQuote(dst []byte, s string) []byte
func AppendQuoteRune(dst []byte, r rune) []byte
func AppendQuoteRuneToASCII(dst []byte, r rune) []byte
func AppendQuoteRuneToGraphic(dst []byte, r rune) []byte
func AppendQuoteToASCII(dst []byte, s string) []byte
func AppendQuoteToGraphic(dst []byte, s string) []byte
func AppendUint(dst []byte, i uint64, base int) []byte
func Atoi(s string) (int, error)
func CanBackquote(s string) bool
func FormatBool(b bool) string
func FormatFloat(f float64, fmt byte, prec, bitSize int) string
func FormatInt(i int64, base int) string
func FormatUint(i uint64, base int) string
func IsGraphic(r rune) bool
func IsPrint(r rune) bool
func Itoa(i int) string
func ParseBool(str string) (bool, error)
func ParseFloat(s string, bitSize int) (float64, error)
func ParseInt(s string, base int, bitSize int) (i int64, err error)
func ParseUint(s string, base int, bitSize int) (uint64, error)
func Quote(s string) string
func QuoteRune(r rune) string
func QuoteRuneToASCII(r rune) string
func QuoteRuneToGraphic(r rune) string
func QuoteToASCII(s string) string
func QuoteToGraphic(s string) string
func Unquote(s string) (string, error)
func UnquoteChar(s string, quote byte) (value rune, multibyte bool, tail string, err error)
type NumError
    func (e *NumError) Error() string

Package files

atob.go atof.go atoi.go decimal.go doc.go extfloat.go ftoa.go isprint.go itoa.go quote.go

Constants

IntSize是int或uint值的大小(以位为单位).

const IntSize = intSize

Variables

ErrRange指示值超出目标类型的范围.

var ErrRange = errors.New("value out of range")

ErrSyntax表示某个值的目标类型语法不正确.

var ErrSyntax = errors.New("invalid syntax")

func AppendBool

func AppendBool(dst []byte, b bool) []byte

AppendBool根据b的值将" true"或" false"追加到dst并返回扩展缓冲区.

Example

bool:true

func AppendFloat

func AppendFloat(dst []byte, f float64, fmt byte, prec, bitSize int) []byte

AppendFloat将由FormatFloat生成的浮点数f的字符串形式附加到dst,并返回扩展缓冲区.

Example

float32:3.1415927E+00
float64:3.1415926535E+00

func AppendInt

func AppendInt(dst []byte, i int64, base int) []byte

AppendInt将由FormatInt生成的整数i的字符串形式附加到dst,并返回扩展缓冲区.

Example

int (base 10):-42
int (base 16):-2a

func AppendQuote

func AppendQuote(dst []byte, s string) []byte

AppendQuote将由Quote生成的表示s的双引号Go字符串文字附加到dst并返回扩展缓冲区.

Example

quote:"\"Fran & Freddie's Diner\""

func AppendQuoteRune

func AppendQuoteRune(dst []byte, r rune) []byte

AppendQuoteRune将由QuoteRune生成的表示符文的单引号Go字符文字附加到dst,并返回扩展缓冲区.

Example

rune:'☺'

func AppendQuoteRuneToASCII

func AppendQuoteRuneToASCII(dst []byte, r rune) []byte

AppendQuoteRuneToASCII将由QuoteRuneToASCII生成的表示符文的单引号Go字符文字附加到dst,并返回扩展缓冲区.

Example

rune (ascii):'\u263a'

func AppendQuoteRuneToGraphic 1.6

func AppendQuoteRuneToGraphic(dst []byte, r rune) []byte

AppendQuoteRuneToGraphic将由QuoteRuneToGraphic生成的表示符文的单引号Go字符文字附加到dst,并返回扩展缓冲区.

func AppendQuoteToASCII

func AppendQuoteToASCII(dst []byte, s string) []byte

AppendQuoteToASCII将由QuoteToASCII生成的表示s的双引号Go字符串文字附加到dst,并返回扩展缓冲区.

Example

quote (ascii):"\"Fran & Freddie's Diner\""

func AppendQuoteToGraphic 1.6

func AppendQuoteToGraphic(dst []byte, s string) []byte

AppendQuoteToGraphic将由QuoteToGraphic生成的表示s的双引号Go字符串文字附加到dst,并返回扩展缓冲区.

func AppendUint

func AppendUint(dst []byte, i uint64, base int) []byte

AppendUint将由FormatUint生成的无符号整数i的字符串形式附加到dst,然后返回扩展缓冲区.

Example

uint (base 10):42
uint (base 16):2a

func Atoi

func Atoi(s string) (int, error)

Atoi等效于ParseInt(s,10,0),转换为int类型.

Example

int, 10

func CanBackquote

func CanBackquote(s string) bool

CanBackquote报告字符串s是否可以不变地表示为单行反引号字符串,且没有制表符以外的控制字符.

Example

true
false

func FormatBool

func FormatBool(b bool) string

FormatBool根据b的值返回" true"或" false".

Example

string, true

func FormatFloat

func FormatFloat(f float64, fmt byte, prec, bitSize int) string

FormatFloat根据格式fmt和precision prec将浮点数f转换为字符串. 假设原始结果是从bitSize位的浮点值(float32为32,float64为64)获得的,则对结果进行四舍五入.

格式fmt是'b'(-ddddp±ddd,二进制指数),'e'(-d.dddde±dd,十进制指数),'E'(-d.ddddE±dd,十进制指数)之一),'f'(-ddd.dddd,无指数),'g'(大指数为'e',否则为'f'),'G'(大指数为'E',否则为'f'),' x'(-0xd.ddddp±ddd,十六进制分数和二进制指数)或'X'(-0Xd.ddddP±ddd,十六进制分数和二进制指数).

精度精度控制由" e"," E"," f"," g"," G"," x"和" X"格式打印的位数(不包括指数). 对于" e"," E"," f"," x"和" X",它是小数点后的位数. 对于" g"和" G",它是有效数字的最大数量(删除零位). 特殊精度-1使用必要的最小位数,以使ParseFloat准确返回f.

Example

string, 3.1415927E+00
string, 3.1415926535E+00

func FormatInt

func FormatInt(i int64, base int) string

FormatInt返回给定基数i的字符串表示形式,表示2 <= base <=36.结果使用小写字母'a'到'z'表示数字值> = 10.

Example

string, -42
string, -2a

func FormatUint

func FormatUint(i uint64, base int) string

FormatUint以2 <= base <= 36的形式返回给定基数i的字符串表示形式.结果使用小写字母'a'到'z'表示数字值> = 10.

Example

string, 42
string, 2a

func IsGraphic 1.6

func IsGraphic(r rune) bool

IsGraphic报告是否通过Unicode将符文定义为图形. 此类字符包括字母,标记,数字,标点符号,符号和空格,来自类别L,M,N,P,S和Zs.

Example

true
true
false

func IsPrint

func IsPrint(r rune) bool

IsPrint报告符文是否已定义为Go可打印的符文,其定义与unicode.IsPrint:字母,数字,标点,符号和ASCII空间.

Example

true
false

func Itoa

func Itoa(i int) string

Itoa等效于FormatInt(int64(i),10).

Example

string, 10

func ParseBool

func ParseBool(str string) (bool, error)

ParseBool返回由字符串表示的布尔值. 它接受1,t,T,TRUE,true,True,0,f,F,FALSE,false,False. 其他任何值都将返回错误.

Example

bool, true

func ParseFloat

func ParseFloat(s string, bitSize int) (float64, error)

ParseFloat将字符串s转换为具有bitSize指定的精度的浮点数:float32为32或float64为64. 当bitSize = 32时,结果仍为float64类型,但可以将其转换为float32而无需更改其值.

ParseFloat接受十进制和十六进制浮点数语法. 如果s格式正确且在有效的浮点数附近,则ParseFloat返回使用IEEE754无偏舍入舍入的最接近的浮点数. (仅当十六进制表示中的位数比尾数可容纳的位数多时,才解析四舍五入的浮点值.)

ParseFloat返回的错误的具体类型为* NumError,其中包括err.Num = s.

如果s在语法上不正确,则ParseFloat返回err.Err = ErrSyntax.

如果s在语法上格式正确,但与给定大小的最大浮点数相差超过1/2 ULP,则ParseFloat返回f =±Inf,err.Err = ErrRange.

ParseFloat将字符串" NaN"," + Inf"和" -Inf"识别为它们各自的特殊浮点值. 匹配时忽略大小写.

Example

float64, 3.1415927410125732
float64, 3.1415926535
float64, NaN
float64, NaN
float64, +Inf
float64, +Inf
float64, -Inf
float64, -0
float64, 0

func ParseInt

func ParseInt(s string, base int, bitSize int) (i int64, err error)

ParseInt解析给定基数(0、2到36)和位大小(0到64)中的字符串s,并返回相应的值i.

如果base == 0,则字符串的前缀隐含基数:" 0b"的基数为2," 0"或" 0o"的基数为8," 0x"的基数为16,否则为10. 此外,仅对于base == 0,按照Go整数文字语法允许使用下划线字符. 如果base小于0,为1或大于36,则返回错误.

bitSize参数指定结果必须适合的整数类型. 位大小0、8、16、32和64分别对应于int,int8,int16,int32和int64. 如果bitSize小于0或大于64,则返回错误.

ParseInt返回的错误的具体类型为* NumError,其中包括err.Num = s. 如果s为空或包含无效数字,则err.Err = ErrSyntax,返回值为0;否则,返回0. 如果与s对应的值不能用给定大小的有符号整数表示,则err.Err = ErrRange,并且返回的值是适当的bitSize和sign的最大大小整数.

Example

int64, -354634382
int64, -3546343826724305832

func ParseUint

func ParseUint(s string, base int, bitSize int) (uint64, error)

ParseUint类似于ParseInt,但用于无符号数字.

Example

uint64, 42
uint64, 42

func Quote

func Quote(s string) string

Quote返回表示s的双引号Go字符串文字. 返回的字符串使用Go转义序列(\ t,\ n,\ xFF,\ u0100)来控制字符和IsPrint定义的不可打印字符.

Example

"\"Fran & Freddie's Diner\t☺\""

func QuoteRune

func QuoteRune(r rune) string

QuoteRune返回表示符文的单引号Go字符文字. 返回的字符串使用Go转义序列(\ t,\ n,\ xFF,\ u0100)来控制字符和IsPrint定义的不可打印字符.

Example

'☺'

func QuoteRuneToASCII

func QuoteRuneToASCII(r rune) string

QuoteRuneToASCII返回表示符文的单引号Go字符文字. 返回的字符串对IsASCII定义的非ASCII字符和不可打印字符使用转义转义序列(\ t,\ n,\ xFF,\ u0100).

Example

'\u263a'

func QuoteRuneToGraphic 1.6

func QuoteRuneToGraphic(r rune) string

QuoteRuneToGraphic返回表示符文的单引号Go字符文字. 返回的字符串对IsGraphic定义的非ASCII字符和不可打印的字符使用Go转义序列(\ t,\ n,\ xFF,\ u0100).

Example

'☺'
'☺'
'\n'
'\t'

func QuoteToASCII

func QuoteToASCII(s string) string

QuoteToASCII返回表示s的双引号Go字符串文字. 返回的字符串对IsASCII定义的非ASCII字符和不可打印字符使用转义转义序列(\ t,\ n,\ xFF,\ u0100).

Example

"\"Fran & Freddie's Diner\t\u263a\""

func QuoteToGraphic 1.6

func QuoteToGraphic(s string) string

QuoteToGraphic返回表示s的双引号Go字符串文字. 返回的字符串对IsGraphic定义的非ASCII字符和不可打印的字符使用Go转义序列(\ t,\ n,\ xFF,\ u0100).

Example

"☺"
"This is a ☺\t\n"
"\" This is a ☺ \\n \""

func Unquote

func Unquote(s string) (string, error)

Unquote将s解释为单引号,双引号或反引号的Go字符串文字,并返回s引用的字符串值. (如果s是单引号,则它将是Go字符文字; Unquote返回相应的单字符字符串.)

Example

"", invalid syntax
"The string must be either double-quoted", <nil>
"or backquoted.", <nil>
"☺", <nil>
"", invalid syntax

func UnquoteChar

func UnquoteChar(s string, quote byte) (value rune, multibyte bool, tail string, err error)

UnquoteChar解码转义的字符串或由字符串s表示的字符文字中的第一个字符或字节. 它返回四个值:

1) value, the decoded Unicode code point or byte value;
2) multibyte, a boolean indicating whether the decoded character requires a multibyte UTF-8 representation;
3) tail, the remainder of the string after the character; and
4) an error that will be nil if the character is syntactically valid.

第二个参数quote是指定要解析的文字的类型,因此允许使用转义的引号字符. 如果设置为单引号,则允许使用序列\'并禁止未转义的'. 如果设置为双引号,则允许使用"",而不允许使用不转义的". 如果设置为零,则不允许任何转义,并且两个引号字符都显示为未转义.

Example

value: "
multibyte: false
tail: Fran & Freddie's Diner\"

type NumError

NumError记录转换失败.

type NumError struct {
    Func string // the failing function (ParseBool, ParseInt, ParseUint, ParseFloat)
    Num  string // the input
    Err  error  // the reason the conversion failed (e.g. ErrRange, ErrSyntax, etc.)
}

Example

Func: ParseFloat
Num: Not a number
Err: invalid syntax
strconv.ParseFloat: parsing "Not a number": invalid syntax

func (*NumError) Error

func (e *NumError) Error() string

by  ICOPY.SITE