1.基础定义

在基础语法篇提到过golang的rune相当于其他编程语言的char,其本质是一个int32(四字节),用[]rune来转换一个字符串时,得到的是个解码后的结果,存储在新开辟的[]rune空间中,而不是对原字符串进行'解释'

对[]byte进行解码需要用到utf8包中的DecodeRune(p []byte) (r rune, size int)函数

2.常用包

在进行字符和字符串操作时常用的包有unicode/utf8(解码、转码等功能)和strings(字符串操作),两个包里的函数很多,不一一展示

测试代码

package main
import (
"fmt"
"strings"
"unicode/utf8"
)
func testChars() {
s :="golang真好玩!" //UTF-8
fmt.Println("utf8")
for _,b := range []byte(s){
fmt.Printf("%X ",b)
}
strings.Split()
fmt.Println()
fmt.Println("unicode")
for n,ch := range s{
fmt.Printf("|%d %X| ",n,ch) //ch is a rune (int32)
}
fmt.Println()
fmt.Println("Rune count:",utf8.RuneCountInString(s))
fmt.Println("Decode")
bytes := []byte(s)
for len(bytes) > 0{
ch,size := utf8.DecodeRune(bytes)
bytes = bytes[size:]
fmt.Printf("%c",ch)
}
fmt.Println()
for n,ch := range []rune(s){
fmt.Printf("|%d %c|",n,ch)
}
}
func main() {
testChars()
}

go内建容器-字符和字符串操作的更多相关文章

  1. 微信浏览器内建的WeixinJSBridge 实现“返回”操作

    微信浏览器内建的WeixinJSBridge 实现“返回”操作 WeixinJSBridge.call('closeWindow');

  2. go内建容器-Map

    1.基础定义 golang中的map如同它的函数一样"纯粹",map就是用来存储键值对的容器,别管什么哈希不哈希的(底层已实现),用就行 //创建一个map m := map[st ...

  3. go内建容器-切片

    1.基础定义 看到'切片'二字,满脸懵逼.切的啥?用的什么刀法切?得到的切片有什么特点?可以对切片进行什么操作? 先看怎么得到切片,也就是前两个问题.切片的底层是数组,所以切片切的是数组:切的时候采用 ...

  4. go内建容器-数组

    1.基础定义 声明时数组长度在数组成员类型前 语法:var variableName [length]int //基本定义 var array1 [3]int //定义并赋值 var array2 = ...

  5. golang内建容器

  6. C 语言函数手册:涵盖字符测试、字符串操作、内存管理、时间换算、数学计算、文件操作、进程管理、文件权限控制、信号处理、接口处理、环境变量、终端控制

    1. 字符测试函数 函数 说明 isascii() 判断字符是否为ASCII码字符 2. 字符串操作 函数 说明 gcvt() 将浮点型数转换为字符串(四舍五入) index() 查找字符串并返回首次 ...

  7. 跟着老猫来搞GO-内建容器Map

    前期回顾 在上面的文章中,老猫和大家分享了GO语言中比较重要的两种数据结构,一种是数组,另外一种是基于数组的slice.本篇文章想要继续和大家分享剩下的容器以及字符字符串的处理. MAP map的定义 ...

  8. 2017.7.12 Python的6种内建序列及操作

    数据结构是通过某种方式(例如对元素进行编号)组织在一起的数据元素的集合,这些数据元素可以是数字或者字符,甚至可以是其他数据结构. 在Python中,最基本的数据结构是序列(sequence).序列中的 ...

  9. Python的6种内建序列之通用操作

    数据结构式通过某种方式(例如对元素进行编号)组织在一起的数据元素的集合,这些数据元素可以是数字或者字符,甚至可以是其他数据结构.在Python中,最基本的数据结构是序列(sequence).序列中的每 ...

随机推荐

  1. QT的动画效果 抖动 下坠 透明 最近在开发QT收藏了好多链接

    http://blog.csdn.net/liang19890820/article/details/51888114

  2. selenium借助send_keys实现上传(以网易邮箱为例)

    #code:utf-8from selenium import webdriverimport time#网易163邮箱dr = webdriver.Firefox()file_path = 'htt ...

  3. IDEA 搭建Java WEB 开发环境

    本文是一篇讲解如何在 目前比较流行的IntellJ IDEA 下搭建JavaWEB的说明文档, 如有写的不详细的地方,希望各位留下自己宝贵的意义. Tips : 遇到的问题 , 请耐心看完文章,在文章 ...

  4. wampserver 最新版本 mysql修改数据库密码

    由于wampsever版本更新就导致以前版本的密码修改造成失败,主要是密码字段改变造成的! 第一步 进入MySQL 控制台  wamp安装,数据库是没有密码 进入控制台直接回车就可以了 第二步 使用 ...

  5. REG小探

    根键名称缩写对照表   常用数据类型

  6. 如何创建.gitignore文件

    为什么要创建.gitignore文件? 因为.gitignore可以排除提交时携带的不必要文件,比如Java中的.class文件.同时还可以排除其他不想提交或者提交没这个必要的文件等等. 创建步骤如下 ...

  7. 以EF形式操作mysql数据库

    1.引入Nuget包: 2.书写EF操作上下文 public class MySqlContext:DbContext { protected override void OnConfiguring( ...

  8. File常见操作函数

    String Name = File.getName();  //获得文件或文件夹的名称: String parentPath = File.getParent();  //获得文件或文件夹的父目录 ...

  9. 一招搞定css页面布局

    如何做出漂亮的页面: 1. 多写页面,多改. 2. 多写页面,多改. 3. 多写页面,多改. 大致的思想步骤: 写页面的时候先规划好大致的分块,无论是用定位或者浮动,首先要确定要应用的场景,使用完浮动 ...

  10. CSS-自定义变量

    使用背景: 一些常见的例子: 为风格统一而使用颜色变量 一致的组件属性(布局,定位等) 避免代码冗余 *更方便的从CSS向JS传递数据(例如媒体断点) 为什么使用: 以下几点是未来CSS属性的简短说明 ...