| // Copyright 2015 The Go Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style |
| // license that can be found in the LICENSE file. |
| |
| package unicode_test |
| |
| import ( |
| "fmt" |
| "unicode" |
| ) |
| |
| // Functions starting with "Is" can be used to inspect which table of range a |
| // rune belongs to. Note that runes may fit into more than one range. |
| func Example_is() { |
| |
| // constant with mixed type runes |
| const mixed = "\b5Ὂg̀9! ℃ᾭG" |
| for _, c := range mixed { |
| fmt.Printf("For %q:\n", c) |
| if unicode.IsControl(c) { |
| fmt.Println("\tis control rune") |
| } |
| if unicode.IsDigit(c) { |
| fmt.Println("\tis digit rune") |
| } |
| if unicode.IsGraphic(c) { |
| fmt.Println("\tis graphic rune") |
| } |
| if unicode.IsLetter(c) { |
| fmt.Println("\tis letter rune") |
| } |
| if unicode.IsLower(c) { |
| fmt.Println("\tis lower case rune") |
| } |
| if unicode.IsMark(c) { |
| fmt.Println("\tis mark rune") |
| } |
| if unicode.IsNumber(c) { |
| fmt.Println("\tis number rune") |
| } |
| if unicode.IsPrint(c) { |
| fmt.Println("\tis printable rune") |
| } |
| if !unicode.IsPrint(c) { |
| fmt.Println("\tis not printable rune") |
| } |
| if unicode.IsPunct(c) { |
| fmt.Println("\tis punct rune") |
| } |
| if unicode.IsSpace(c) { |
| fmt.Println("\tis space rune") |
| } |
| if unicode.IsSymbol(c) { |
| fmt.Println("\tis symbol rune") |
| } |
| if unicode.IsTitle(c) { |
| fmt.Println("\tis title case rune") |
| } |
| if unicode.IsUpper(c) { |
| fmt.Println("\tis upper case rune") |
| } |
| } |
| |
| // Output: |
| // For '\b': |
| // is control rune |
| // is not printable rune |
| // For '5': |
| // is digit rune |
| // is graphic rune |
| // is number rune |
| // is printable rune |
| // For 'Ὂ': |
| // is graphic rune |
| // is letter rune |
| // is printable rune |
| // is upper case rune |
| // For 'g': |
| // is graphic rune |
| // is letter rune |
| // is lower case rune |
| // is printable rune |
| // For '̀': |
| // is graphic rune |
| // is mark rune |
| // is printable rune |
| // For '9': |
| // is digit rune |
| // is graphic rune |
| // is number rune |
| // is printable rune |
| // For '!': |
| // is graphic rune |
| // is printable rune |
| // is punct rune |
| // For ' ': |
| // is graphic rune |
| // is printable rune |
| // is space rune |
| // For '℃': |
| // is graphic rune |
| // is printable rune |
| // is symbol rune |
| // For 'ᾭ': |
| // is graphic rune |
| // is letter rune |
| // is printable rune |
| // is title case rune |
| // For 'G': |
| // is graphic rune |
| // is letter rune |
| // is printable rune |
| // is upper case rune |
| } |
| |
| func ExampleSimpleFold() { |
| fmt.Printf("%#U\n", unicode.SimpleFold('A')) // 'a' |
| fmt.Printf("%#U\n", unicode.SimpleFold('a')) // 'A' |
| fmt.Printf("%#U\n", unicode.SimpleFold('K')) // 'k' |
| fmt.Printf("%#U\n", unicode.SimpleFold('k')) // '\u212A' (Kelvin symbol, K) |
| fmt.Printf("%#U\n", unicode.SimpleFold('\u212A')) // 'K' |
| fmt.Printf("%#U\n", unicode.SimpleFold('1')) // '1' |
| |
| // Output: |
| // U+0061 'a' |
| // U+0041 'A' |
| // U+006B 'k' |
| // U+212A 'K' |
| // U+004B 'K' |
| // U+0031 '1' |
| } |
| |
| func ExampleTo() { |
| const lcG = 'g' |
| fmt.Printf("%#U\n", unicode.To(unicode.UpperCase, lcG)) |
| fmt.Printf("%#U\n", unicode.To(unicode.LowerCase, lcG)) |
| fmt.Printf("%#U\n", unicode.To(unicode.TitleCase, lcG)) |
| |
| const ucG = 'G' |
| fmt.Printf("%#U\n", unicode.To(unicode.UpperCase, ucG)) |
| fmt.Printf("%#U\n", unicode.To(unicode.LowerCase, ucG)) |
| fmt.Printf("%#U\n", unicode.To(unicode.TitleCase, ucG)) |
| |
| // Output: |
| // U+0047 'G' |
| // U+0067 'g' |
| // U+0047 'G' |
| // U+0047 'G' |
| // U+0067 'g' |
| // U+0047 'G' |
| } |
| |
| func ExampleToLower() { |
| const ucG = 'G' |
| fmt.Printf("%#U\n", unicode.ToLower(ucG)) |
| |
| // Output: |
| // U+0067 'g' |
| } |
| func ExampleToTitle() { |
| const ucG = 'g' |
| fmt.Printf("%#U\n", unicode.ToTitle(ucG)) |
| |
| // Output: |
| // U+0047 'G' |
| } |
| |
| func ExampleToUpper() { |
| const ucG = 'g' |
| fmt.Printf("%#U\n", unicode.ToUpper(ucG)) |
| |
| // Output: |
| // U+0047 'G' |
| } |
| |
| func ExampleSpecialCase() { |
| t := unicode.TurkishCase |
| |
| const lci = 'i' |
| fmt.Printf("%#U\n", t.ToLower(lci)) |
| fmt.Printf("%#U\n", t.ToTitle(lci)) |
| fmt.Printf("%#U\n", t.ToUpper(lci)) |
| |
| const uci = 'İ' |
| fmt.Printf("%#U\n", t.ToLower(uci)) |
| fmt.Printf("%#U\n", t.ToTitle(uci)) |
| fmt.Printf("%#U\n", t.ToUpper(uci)) |
| |
| // Output: |
| // U+0069 'i' |
| // U+0130 'İ' |
| // U+0130 'İ' |
| // U+0069 'i' |
| // U+0130 'İ' |
| // U+0130 'İ' |
| } |
| |
| func ExampleIsDigit() { |
| fmt.Printf("%t\n", unicode.IsDigit('৩')) |
| fmt.Printf("%t\n", unicode.IsDigit('A')) |
| // Output: |
| // true |
| // false |
| } |
| |
| func ExampleIsNumber() { |
| fmt.Printf("%t\n", unicode.IsNumber('Ⅷ')) |
| fmt.Printf("%t\n", unicode.IsNumber('A')) |
| // Output: |
| // true |
| // false |
| } |
| |
| func ExampleIsLetter() { |
| fmt.Printf("%t\n", unicode.IsLetter('A')) |
| fmt.Printf("%t\n", unicode.IsLetter('7')) |
| // Output: |
| // true |
| // false |
| } |
| |
| func ExampleIsLower() { |
| fmt.Printf("%t\n", unicode.IsLower('a')) |
| fmt.Printf("%t\n", unicode.IsLower('A')) |
| // Output: |
| // true |
| // false |
| } |
| |
| func ExampleIsUpper() { |
| fmt.Printf("%t\n", unicode.IsUpper('A')) |
| fmt.Printf("%t\n", unicode.IsUpper('a')) |
| // Output: |
| // true |
| // false |
| } |
| |
| func ExampleIsTitle() { |
| fmt.Printf("%t\n", unicode.IsTitle('Dž')) |
| fmt.Printf("%t\n", unicode.IsTitle('a')) |
| // Output: |
| // true |
| // false |
| } |
| |
| func ExampleIsSpace() { |
| fmt.Printf("%t\n", unicode.IsSpace(' ')) |
| fmt.Printf("%t\n", unicode.IsSpace('\n')) |
| fmt.Printf("%t\n", unicode.IsSpace('\t')) |
| fmt.Printf("%t\n", unicode.IsSpace('a')) |
| // Output: |
| // true |
| // true |
| // true |
| // false |
| } |