go语言学习笔记 — 基础 — 基本数据类型 — 字符串:字符串分割,获取字符串的某段子串substring

Posted Locutus

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了go语言学习笔记 — 基础 — 基本数据类型 — 字符串:字符串分割,获取字符串的某段子串substring相关的知识,希望对你有一定的参考价值。

获取字符串的某段子串substring(字符串分割)是开发过程中常见的操作。


1. 字符串搜索常用方法

  • 获取全字符串中某个字符的ascii下标。strings.Index():正向搜索子串;strings.LastIndex():反向搜索子串

  • 搜索的起始位置可以通过切片偏移操作。strings.Index(string[substring的前一字符:], “substring”),即从substring的前一字符到全字符的末尾,搜索substring首字符的相对ascii位置。然后,使用切片string[绝对位置+相对位置:],获得字符串的某段子串。


2. 使用strings.Index(),在全字符串中正向搜索子串的首字符,返回首字符在全字符串中的ascii下标

package string_test

import (
	"fmt"
	"strings"
	"testing"
)

// 使用strings.Index(),在tracer字符串"死神来了,死神byebye"中搜索子串",",返回","在tracer字符串中的ascii下标

func TestSubstringSearch(t *testing.T) {
	tracer := "死神来了,死神byebye"

	comma := strings.Index(tracer, ",")
	fmt.Println(comma)
}

// 12

3. 使用切片string[绝对位置+相对位置:],获得字符串的某段子串

使用切片,从字符串"死神来了,死神byebye"中的",“的ascii下标开始(绝对位置),一直到字符串结束,构造一个子串”,死神byebye",在这个子串中搜索"死神",返回子串首字符的ascii下标(相对位置)。

然后,使用切片string[绝对位置+相对位置:],获得字符串的某段子串。

package main

import (
	"fmt"
	"strings"
)

// 返回从第二个死神开始的子串
func main() {
	tracer := "死神来了,死神byebye"
	comma := strings.Index(tracer, ",") // 使用strings.Index,在字符串"死神来了,死神byebye"中搜索子串",",返回","位置的ascii字符串下标

	pos := strings.Index(tracer[comma:], "死神") // 从字符串"死神来了,死神byebye"中的","位置开始,一直到字符串结束,构造一个子串",死神byebye",在这个子串中搜索"死神",返回ascii下标(相对位置)

	fmt.Println(comma, pos, tracer[comma+pos:]) 
	// 输出","在tracer字符串的绝对位置,输出"死神"在tracer[comma:]子串的相对位置,利用切片偏移(绝对位置+相对位置)输出子串“死神byebye”
}

// 12 3 死神byebye

以上是关于go语言学习笔记 — 基础 — 基本数据类型 — 字符串:字符串分割,获取字符串的某段子串substring的主要内容,如果未能解决你的问题,请参考以下文章

go语言学习笔记 — 基础 — 基本数据类型 — 字符串:字符

go语言学习笔记 — 基础 — 基本数据类型 — 原生数据类型:布尔型数字类型(整型与浮点型)字符串类型

go语言学习笔记 — 基础 — 基本数据类型 — 字符串(11):go中的字符串

go语言学习笔记 — 基础 — 基本数据类型 — 类型类别:值类型和引用类型

go语言学习笔记 — 基础 — 基本数据类型 — 字符串:遍历字符串

go语言学习笔记 — 基础 — 基本数据类型 — 字符串:修改字符串