检查是否包含子串和截取子串

package main

import (
   "fmt"
   "strings"
)

func main() {
   // 检查是否包含子串
   str := "believe"
   sub := "lie"
   if strings.Contains(str, sub) {
      fmt.Printf("%+v包含%+v \n", str, sub) // believe包含lie
   } else {
      fmt.Printf("%+v不包含%+v \n", str, sub)
   }

   // 重要提醒:strings.Contains()是区分大小写的
   str = "believe"
   sub = "lIe"
   if strings.Contains(str, sub) {
      fmt.Printf("%+v包含%+v \n", str, sub)
   } else {
      fmt.Printf("%+v不包含%+v \n", str, sub) // believe不包含lIe
   }

   // 如果要实现不区分大小写检查是否包含子串,可先使用strings.ToLower()将两者都转为全小写
   str = "believe"
   sub = "lIe"
   strLower := strings.ToLower(str)
   subLower := strings.ToLower(sub)
   if strings.Contains(strLower, subLower) {
      fmt.Printf("%+v包含%+v \n", str, sub) // believe包含lIe
   } else {
      fmt.Printf("%+v不包含%+v \n", str, sub)
   }

   // 截取子串
   str = "believe"
   fmt.Printf("%+v \n", str[2:5]) // lie
   // b e l i e v e
   // 0 1 2 3 4 5 6
   // _ _ l i e _ _  [2:5]表示截取第2个字母(含)至第5个字母(不含)之间的子串

   // 截取子串可以不指定起始位置,也可以不指定结束位置,还可以起始位置和结束位置都不指定
   str = "believe"
   fmt.Printf("%+v \n", str[:5]) // belie
   fmt.Printf("%+v \n", str[2:]) // lieve
   fmt.Printf("%+v \n", str[:])  // believe
   // b e l i e v e
   // 0 1 2 3 4 5 6
   // b e l i e _ _  [:5]表示截取从开始至第5个字母(不含)之间的子串
   // _ _ l i e v e  [2:]表示截取第2个字母(含)至最后的子串
   // b e l i e v e  [:]表示截取从开始至最后的子串,实际上就是没有截取直接获取整个字符串

   // 截取字符串的[start:end]用法也适用于截取切片
   var slice []string
   slice = append(slice, "刘一")      // 第0个
   slice = append(slice, "陈二")      // 第1个
   slice = append(slice, "张三")      // 第2个 张三 --- 起始位置(含)
   slice = append(slice, "李四")      // 第3个 李四
   slice = append(slice, "王五")      // 第4个 王五
   slice = append(slice, "赵六")      // 第5个 ×× --- 结束位置(不含)
   slice = append(slice, "孙七")      // 第6个
   slice = append(slice, "周八")      // 第7个
   slice = append(slice, "吴九")      // 第8个
   slice = append(slice, "郑十")      // 第9个
   fmt.Printf("%+v \n", slice[2:5]) // [张三 李四 王五]
}

Copyright © 2024 码农人生. All Rights Reserved