• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

Golang字符串类型转换

武飞扬头像
西直门三太子
帮助1

字符统计问题

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"
}

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhgekiai
系列文章
更多 icon
同类精品
更多 icon
继续加载