Golang字符串类型转换

字符统计问题

1.len获取的是字节数
2.utf8.RuneCountInString(p1) 统计p1中的字符数
3.range是按字符遍历的
4.rune int32别名 用来区分字符串和整型

package main

import (
	"fmt"
	"unicode/utf8"
)

func main() {
	a := "hello world 你好,世界"

	//len获取的是字节数
	fmt.Println(len(a)) //27

	//utf8.RuneCountInString(p1) 统计p1中的字符数
	fmt.Println(utf8.RuneCountInString(a)) //17

	//range是按字符遍历的
	for k, v := range a {
		fmt.Println(k, string(v))
	}

	//rune int32别名 用来区分字符串和整型
	b := []rune(a)
	fmt.Println(b) //[104 101 108 108 111 32 119 111 114 108 100 32 20320 22909 65292 19990 30028]
}

和字节切片相互转换

1.[]byte(p1) 将字符串p1转换为字节切片
2.string(p1) 将字节切片p1转换为字符串

package main

import (
	"fmt"
)

func main() {
	a := "hello world 你好,世界"
	//[]byte(p1) 将字符串p1转换为字节切片
	b := []byte(a)
   	fmt.Println(b) //[104 101 108 108 111 32 119 111 114 108 100 32 228 189 160 229 165 189 239 188 140 228 184 150 231 149 140]
    // string(p1) 将字节切片p1转换为字符串
   	fmt.Println(string(b)) //hello world 你好,世界
}
和bool相互转换

1.strconv.ParseBool(p1) 将字符串p1转换成bool,p1(“true”,“True”,“1”,“0”,“False”,“false”)才能成功转换

2.strconv.FormatBool(p1) 将bool类型p1转换成字符串

package main

import (
	"fmt"
	"strconv"
)

func main() {
	a := "true"
	var c bool

	//strconv.ParseBool(p1) 将字符串p1转换成bool,p1("true","True","1","0","False","false")才能成功转换
	if b, err := strconv.ParseBool(a); err != nil {
		panic(err)
	} else {
		c = b
	}

	fmt.Println(c) //true

	// strconv.FormatBool(p1) 将bool类型p1转换成字符串
	fmt.Printf("%#v", strconv.FormatBool(c)) //"true"
}

和整型相互转换

1.strconv.Atoi(p1) 将字符串p1转换成整型(int)
2.strconv.ParseInt(p1, p2, p3) 将字符串p1转换成整型,p2:按照什么进制转换 p3:转换后的类型长度

package main

import (
	"fmt"
	"reflect"
	"strconv"
)

func main() {
	a := "16"
	// strconv.Atoi(p1) 将字符串p1转换成整型(int)
	if atoi, err := strconv.Atoi(a); err == nil {
		fmt.Printf("%#v", atoi) //16
	} else {
		panic(err)
	}

	// strconv.ParseInt(p1, p2, p3) 将字符串p1转换成整型,p2:按照什么进制转换 p3:转换后的类型长度
	if parseInt, err := strconv.ParseInt(a, 10, 64); err == nil {
		fmt.Printf("%#v", parseInt) //16
		fmt.Println(reflect.TypeOf(parseInt)) //int64
	} else {
		panic(err)
	}
}

和float相互转换

1.strconv.FormatFloat(p1,p2,p3,p4) 将float64 p1转换成字符串 p2:格式 p3:小数几位(-1保持原有位数) p4:精度
2.strconv.ParseFloat(p1,p2) 将字符串转换成float p2:精度

package main

import (
	"fmt"
	"strconv"
)

func main() {
	var a float64 = 3.1415
	fmt.Println(a)
	//strconv.FormatFloat(p1,p2,p3,p4) 将float64 p1转换成字符串 p2:格式 p3:小数几位(-1保持原有位数) p4:精度
	float := strconv.FormatFloat(a, 'f', 10, 64)
	fmt.Printf("%#v\r\n", float)                               //"3.1415000000"
	fmt.Printf("%#v\r\n", strconv.FormatFloat(a, 'f', -1, 64)) //"3.1415"

	//strconv.ParseFloat(p1,p2) 将字符串转换成float p2:精度
	if parseFloat, err := strconv.ParseFloat(float, 64); err == nil {
		fmt.Printf("%#v\r\n", parseFloat) //3.1415
	} else {
		panic(err)
	}

	fmt.Printf("%#v\r\n", fmt.Sprintf("%.4f", 3.1415)) // "3.1415"
}

fmt.Printf

可以很方便的将一些其它数据类型转换成字符串

package main

import "fmt"

func main() {

	fmt.Printf("%#v\r\n",fmt.Sprintf("%d",16)) // "16"
	//转换float到string 需要知道小数有几位
	fmt.Printf("%#v\r\n",fmt.Sprintf("%.4f",16.1616)) // "16.1616"
	fmt.Printf("%#v\r\n",fmt.Sprintf("%t",true)) // "true"
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值