Golang : Extract unicode string from another unicode string example




Problem:

You have a string with unicode (UTF-8) characters and you want to extract part of the string by using character indexing. However, the output result is weird. What is the correct way to extract unicode (UTF-8) characters from a string?

Solution:

Wrap the string with []rune, then index the characters and finally the convert the rune bytes to string.

Here you go!

 package main

 import "fmt"

 func main() {
  // wrong way
  fmt.Println("fuß is german language for foot"[1])

  // wrong way
  fmt.Println(string("fuß is german language for foot"[1]))

  // correct way
  fmt.Println(string([]rune("fuß is german language for foot")[0:3]))

  // correct way
  fmt.Println(string([]rune("腳 is chinese language for foot")[0:1]))

 }

Output:

117

u

fuß

alternatively, you can use the strings.SplitN() function as well.

 package main

 import (
  "fmt"
  "strings"
 )

 func main() {
  str := "腳 is chinese language for foot"

  // extract each word from str
  parts := strings.SplitN(str, " ", -1)

  fmt.Println(parts[0])

  fmt.Println(parts[1])

  fmt.Println(parts[2])

  fmt.Println(parts[3])

  fmt.Println(parts[4])

  fmt.Println(parts[5])

 }

Output:

is

chinese

language

for

foot

Happy coding!

References:

https://golang.org/ref/spec#Index_expressions

https://www.socketloop.com/tutorials/golang-get-first-few-and-last-few-characters-from-string

https://www.socketloop.com/tutorials/golang-extract-sub-strings

  See also : Golang : Get first few and last few characters from string





By Adam Ng

IF you gain some knowledge or the information here solved your programming problem. Please consider donating to the less fortunate or some charities that you like. Apart from donation, planting trees, volunteering or reducing your carbon footprint will be great too.


Advertisement