strconv.IsPrint în Go

Conversii între text și numere (strconv) Go 1.0 (IsGraphic din Go 1.6)

IsPrint și IsGraphic spun dacă un caracter poate fi afișat ca atare; CanBackquote dacă un text încape între backticks.

Sintaxă
func IsPrint(r rune) bool
func IsGraphic(r rune) bool
func CanBackquote(s string) bool

Ce face strconv.IsPrint

strconv.IsPrint(r) spune dacă Quote lasă caracterul neschimbat: literele, cifrele, semnele, simbolurile și spațiul obișnuit (U+0020). strconv.IsGraphic(r) acceptă în plus și celelalte spații Unicode, de exemplu spațiul neîntrerupt (U+00A0); este regula folosită de QuoteToGraphic. Caracterele de control (\n, \t) nu sunt acceptate de niciuna.

strconv.CanBackquote(s) spune dacă textul poate fi scris neschimbat între backticks (`…`), pe un singur rând: nu are rânduri noi, alte caractere de control în afară de tab, backticks sau octeți UTF-8 invalizi.

Parametri

Parametru Descriere
r Caracterul verificat.
s La CanBackquote: textul verificat.

Ce returnează

true sau false.

Exemple

Exemplul 1: Caractere tipăribile

package main

import (
	"fmt"
	"strconv"
)

func main() {
	fmt.Println("caracter  IsPrint IsGraphic")
	for _, r := range []rune{'ș', ' ', '\u00a0', '\t', '\n', '€'} {
		fmt.Printf("%-9q %-7t %t\n", r, strconv.IsPrint(r), strconv.IsGraphic(r))
	}
}

Rezultat

caracter  IsPrint IsGraphic
'ș'       true    true
' '       true    true
'\u00a0'  false   true
'\t'      false   false
'\n'      false   false
'€'       true    true

Exemplul 2: Poate fi scris între backticks?

package main

import (
	"fmt"
	"strconv"
)

func main() {
	for _, s := range []string{"C:\\Users\\Ana", "Iași\tRomânia", "două\nrânduri", "cu `backtick`"} {
		fmt.Printf("%-22q %t\n", s, strconv.CanBackquote(s))
	}
}

Rezultat

"C:\\Users\\Ana"       true
"Iași\tRomânia"        true
"două\nrânduri"        false
"cu `backtick`"        false

Greșeli frecvente

  • Confunzi strconv.IsPrint cu unicode.IsPrint. Fac același lucru, dar pachetul strconv are tabelele proprii, ca să nu depindă de unicode; în codul tău folosește-o pe cea din pachetul pe care îl imporți deja.

Comenzi înrudite

  • strconv.Quote: Pune textul între ghilimele, ca în codul Go, și scrie caracterele speciale ca secvențe \n, \t, \u…
  • unicode.IsLetter: Verifică tipul unui caracter: literă, cifră, număr, spațiu alb sau semn de punctuație, după regulile Unicode.