add: string quiz + execises
This commit is contained in:
@@ -0,0 +1,78 @@
|
||||
// For more tutorials: https://blog.learngoprogramming.com
|
||||
//
|
||||
// Copyright © 2018 Inanc Gumus
|
||||
// Learn Go Programming Course
|
||||
// License: https://creativecommons.org/licenses/by-nc-sa/4.0/
|
||||
//
|
||||
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"unicode/utf8"
|
||||
)
|
||||
|
||||
func main() {
|
||||
strings := []string{
|
||||
"cool",
|
||||
"güzel",
|
||||
"jīntiān",
|
||||
"今天",
|
||||
"read 🤓",
|
||||
}
|
||||
|
||||
for _, s := range strings {
|
||||
fmt.Printf("%q\n", s)
|
||||
|
||||
// Print the byte and rune length of the strings
|
||||
// Hint: Use len and utf8.RuneCountInString
|
||||
fmt.Printf("\thas %d bytes and %d runes\n",
|
||||
len(s), utf8.RuneCountInString(s))
|
||||
|
||||
// Print the bytes of the strings in hexadecimal
|
||||
// Hint: Use % x verb
|
||||
fmt.Printf("\tbytes : % x\n", s)
|
||||
|
||||
// Print the runes of the strings in hexadecimal
|
||||
// Hint: Use % x verb
|
||||
fmt.Print("\trunes :")
|
||||
for _, r := range s {
|
||||
fmt.Printf("% x", r)
|
||||
}
|
||||
fmt.Println()
|
||||
|
||||
// Print the runes of the strings as rune literals
|
||||
// Hint: Use for range
|
||||
fmt.Print("\trunes :")
|
||||
for _, r := range s {
|
||||
fmt.Printf("%q", r)
|
||||
}
|
||||
fmt.Println()
|
||||
|
||||
// Print the first rune and its byte size of the strings
|
||||
// Hint: Use utf8.DecodeRuneInString
|
||||
r, size := utf8.DecodeRuneInString(s)
|
||||
fmt.Printf("\tfirst : %q (%d bytes)\n", r, size)
|
||||
|
||||
// Print the last rune of the strings
|
||||
// Hint: Use utf8.DecodeLastRuneInString
|
||||
r, size = utf8.DecodeLastRuneInString(s)
|
||||
fmt.Printf("\tfirst : %q (%d bytes)\n", r, size)
|
||||
|
||||
// Slice and print the first two runes of the strings
|
||||
_, first := utf8.DecodeRuneInString(s)
|
||||
_, second := utf8.DecodeRuneInString(s[first:])
|
||||
fmt.Printf("\tfirst 2 : %q\n", s[:first+second])
|
||||
|
||||
// Slice and print the last two runes of the strings
|
||||
_, last1 := utf8.DecodeLastRuneInString(s)
|
||||
_, last2 := utf8.DecodeLastRuneInString(s[:len(s)-last1])
|
||||
fmt.Printf("\tlast 2 : %q\n", s[len(s)-last2-last1:])
|
||||
|
||||
// Convert the string to []rune
|
||||
// Print the first and last two runes
|
||||
rs := []rune(s)
|
||||
fmt.Printf("\tfirst 2 : %q\n", string(rs[:2]))
|
||||
fmt.Printf("\tlast 2 : %q\n", string(rs[len(rs)-2:]))
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user