1 // Copyright 2015 The Go Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style 3 // license that can be found in the LICENSE file. 4 5 package unicode_test 6 7 import ( 8 "fmt" 9 "unicode" 10 ) 11 12 // Functions starting with "Is" can be used to inspect which table of range a 13 // rune belongs to. Note that runes may fit into more than one range. 14 func Example_is() { 15 16 // constant with mixed type runes 17 const mixed = "\b5g9! G" 18 for _, c := range mixed { 19 fmt.Printf("For %q:\n", c) 20 if unicode.IsControl(c) { 21 fmt.Println("\tis control rune") 22 } 23 if unicode.IsDigit(c) { 24 fmt.Println("\tis digit rune") 25 } 26 if unicode.IsGraphic(c) { 27 fmt.Println("\tis graphic rune") 28 } 29 if unicode.IsLetter(c) { 30 fmt.Println("\tis letter rune") 31 } 32 if unicode.IsLower(c) { 33 fmt.Println("\tis lower case rune") 34 } 35 if unicode.IsMark(c) { 36 fmt.Println("\tis mark rune") 37 } 38 if unicode.IsNumber(c) { 39 fmt.Println("\tis number rune") 40 } 41 if unicode.IsPrint(c) { 42 fmt.Println("\tis printable rune") 43 } 44 if !unicode.IsPrint(c) { 45 fmt.Println("\tis not printable rune") 46 } 47 if unicode.IsPunct(c) { 48 fmt.Println("\tis punct rune") 49 } 50 if unicode.IsSpace(c) { 51 fmt.Println("\tis space rune") 52 } 53 if unicode.IsSymbol(c) { 54 fmt.Println("\tis symbol rune") 55 } 56 if unicode.IsTitle(c) { 57 fmt.Println("\tis title case rune") 58 } 59 if unicode.IsUpper(c) { 60 fmt.Println("\tis upper case rune") 61 } 62 } 63 64 // Output: 65 // For '\b': 66 // is control rune 67 // is not printable rune 68 // For '5': 69 // is digit rune 70 // is graphic rune 71 // is number rune 72 // is printable rune 73 // For '': 74 // is graphic rune 75 // is letter rune 76 // is printable rune 77 // is upper case rune 78 // For 'g': 79 // is graphic rune 80 // is letter rune 81 // is lower case rune 82 // is printable rune 83 // For '': 84 // is graphic rune 85 // is mark rune 86 // is printable rune 87 // For '9': 88 // is digit rune 89 // is graphic rune 90 // is number rune 91 // is printable rune 92 // For '!': 93 // is graphic rune 94 // is printable rune 95 // is punct rune 96 // For ' ': 97 // is graphic rune 98 // is printable rune 99 // is space rune 100 // For '': 101 // is graphic rune 102 // is printable rune 103 // is symbol rune 104 // For '': 105 // is graphic rune 106 // is letter rune 107 // is printable rune 108 // is title case rune 109 // For 'G': 110 // is graphic rune 111 // is letter rune 112 // is printable rune 113 // is upper case rune 114 } 115 116 func ExampleSimpleFold() { 117 fmt.Printf("%#U\n", unicode.SimpleFold('A')) // 'a' 118 fmt.Printf("%#U\n", unicode.SimpleFold('a')) // 'A' 119 fmt.Printf("%#U\n", unicode.SimpleFold('K')) // 'k' 120 fmt.Printf("%#U\n", unicode.SimpleFold('k')) // '\u212A' (Kelvin symbol, ) 121 fmt.Printf("%#U\n", unicode.SimpleFold('\u212A')) // 'K' 122 fmt.Printf("%#U\n", unicode.SimpleFold('1')) // '1' 123 124 // Output: 125 // U+0061 'a' 126 // U+0041 'A' 127 // U+006B 'k' 128 // U+212A '' 129 // U+004B 'K' 130 // U+0031 '1' 131 } 132 133 func ExampleTo() { 134 const lcG = 'g' 135 fmt.Printf("%#U\n", unicode.To(unicode.UpperCase, lcG)) 136 fmt.Printf("%#U\n", unicode.To(unicode.LowerCase, lcG)) 137 fmt.Printf("%#U\n", unicode.To(unicode.TitleCase, lcG)) 138 139 const ucG = 'G' 140 fmt.Printf("%#U\n", unicode.To(unicode.UpperCase, ucG)) 141 fmt.Printf("%#U\n", unicode.To(unicode.LowerCase, ucG)) 142 fmt.Printf("%#U\n", unicode.To(unicode.TitleCase, ucG)) 143 144 // Output: 145 // U+0047 'G' 146 // U+0067 'g' 147 // U+0047 'G' 148 // U+0047 'G' 149 // U+0067 'g' 150 // U+0047 'G' 151 } 152 153 func ExampleToLower() { 154 const ucG = 'G' 155 fmt.Printf("%#U\n", unicode.ToLower(ucG)) 156 157 // Output: 158 // U+0067 'g' 159 } 160 func ExampleToTitle() { 161 const ucG = 'g' 162 fmt.Printf("%#U\n", unicode.ToTitle(ucG)) 163 164 // Output: 165 // U+0047 'G' 166 } 167 168 func ExampleToUpper() { 169 const ucG = 'g' 170 fmt.Printf("%#U\n", unicode.ToUpper(ucG)) 171 172 // Output: 173 // U+0047 'G' 174 } 175 176 func ExampleSpecialCase() { 177 t := unicode.TurkishCase 178 179 const lci = 'i' 180 fmt.Printf("%#U\n", t.ToLower(lci)) 181 fmt.Printf("%#U\n", t.ToTitle(lci)) 182 fmt.Printf("%#U\n", t.ToUpper(lci)) 183 184 const uci = '' 185 fmt.Printf("%#U\n", t.ToLower(uci)) 186 fmt.Printf("%#U\n", t.ToTitle(uci)) 187 fmt.Printf("%#U\n", t.ToUpper(uci)) 188 189 // Output: 190 // U+0069 'i' 191 // U+0130 '' 192 // U+0130 '' 193 // U+0069 'i' 194 // U+0130 '' 195 // U+0130 '' 196 } 197