Tcl - Stringhe

Il tipo di dati primitivo di Tcl è stringa e spesso possiamo trovare virgolette su Tcl come linguaggio solo stringa. Queste stringhe possono contenere caratteri alfanumerici, solo numeri, booleani o anche dati binari. Tcl utilizza caratteri Unicode a 16 bit e i caratteri alfanumerici possono contenere lettere inclusi caratteri non latini, numeri o punteggiatura.

Il valore booleano può essere rappresentato come 1, sì o vero per vero e 0, no o falso per falso.

Rappresentazioni di stringa

A differenza di altre lingue, in Tcl non è necessario includere virgolette doppie quando è solo una singola parola. Un esempio può essere:

#!/usr/bin/tclsh

set myVariable hello
puts $myVariable

Quando il codice sopra viene eseguito, produce il seguente risultato:

hello

Quando vogliamo rappresentare più stringhe, possiamo usare virgolette doppie o parentesi graffe. È mostrato di seguito -

#!/usr/bin/tclsh

set myVariable "hello world"
puts $myVariable
set myVariable {hello world}
puts $myVariable

Quando il codice sopra viene eseguito, produce il seguente risultato:

hello world
hello world

Sequenza di escape delle stringhe

Un carattere letterale può essere un carattere semplice (ad esempio, "x"), una sequenza di escape (ad esempio, "\ t") o un carattere universale (ad esempio, "\ u02C0").

Ci sono alcuni caratteri in Tcl quando sono preceduti da una barra rovesciata avranno un significato speciale e sono usati per rappresentare come una nuova riga (\ n) o una tabulazione (\ t). Qui, hai un elenco di alcuni di questi codici di sequenza di escape:

Sequenza di fuga Senso
\\ \ personaggio
\ ' ' personaggio
\ " " personaggio
\? ? personaggio
\un Allerta o campanello
\ b Backspace
\ f Avanzamento modulo
\ n Nuova linea
\ r Ritorno in carrozza
\ t Tabulazione orizzontale
\ v Tab verticale

Di seguito è riportato l'esempio per mostrare alcuni caratteri della sequenza di escape:

#!/usr/bin/tclsh

puts "Hello\tWorld\n\nTutorialspoint";

Quando il codice precedente viene compilato ed eseguito, produce il seguente risultato:

Hello   World

Tutorialspoint

Comando stringa

L'elenco dei sottocomandi per il comando stringa è elencato nella tabella seguente:

Sr.No. Metodi e descrizione
1

compare stringa1 stringa2

Confronta lessograficamente stringa1 e stringa2. Restituisce 0 se uguale, -1 se stringa1 viene prima di stringa2, altrimenti 1.

2

first stringa1 stringa2

Restituisce la prima occorrenza dell'indice di stringa1 in stringa2. Se non trovato, restituisce -1.

3

index indice di stringa

Restituisce il carattere all'indice.

4

last stringa1 stringa2

Restituisce l'ultima occorrenza dell'indice di stringa1 in stringa2. Se non trovato, restituisce -1.

5

length corda

Restituisce la lunghezza della stringa.

6

match pattern corda

Restituisce 1 se la stringa corrisponde al modello.

7

range stringa index1 index2

Restituisce l'intervallo di caratteri in stringa da index1 a index2.

8

tolower corda

Restituisce la stringa minuscola.

9

toupper corda

Restituisce la stringa maiuscola.

10

trim stringa? trimcharacters?

Rimuove i caratteri trim su entrambe le estremità della stringa. I caratteri trim predefiniti sono gli spazi bianchi.

11

trimleft stringa? trimcharacters?

Rimuove i caratteri trim all'inizio della stringa a sinistra. I caratteri trim predefiniti sono gli spazi bianchi.

12

trimright stringa? trimcharacters?

Rimuove i caratteri trim nell'estremità sinistra della stringa. I caratteri trim predefiniti sono gli spazi bianchi.

13

wordend indice findstring

Restituisce l'indice in findstring del carattere dopo la parola contenente il carattere in index.

14

wordstart indice findstring

Restituisce l'indice in findstring del primo carattere nella parola contenente il carattere in index.

Di seguito vengono forniti esempi di alcuni comandi secondari di stringhe Tcl di uso comune.

Confronto tra stringhe

#!/usr/bin/tclsh

set s1 "Hello"
set s2 "World"
set s3 "World"
puts [string compare $s1 $s2]
if {[string compare $s2 $s3] == 0} {
   puts "String \'s1\' and \'s2\' are same.";
}

if {[string compare $s1 $s2] == -1} {
   puts "String \'s1\' comes before \'s2\'.";
}

if {[string compare $s2 $s1] == 1} {
   puts "String \'s2\' comes after \'s1\'.";
}

Quando il codice precedente viene compilato ed eseguito, produce il seguente risultato:

-1
String 's1' and 's2' are same.
String 's1' comes before 's2'.
String 's2' comes after 's1'.

Indice di stringa

#!/usr/bin/tclsh

set s1 "Hello World"
set s2 "o"
puts "First occurrence of $s2 in s1"
puts [string first $s2 $s1]
puts "Character at index 0 in s1"
puts [string index $s1 0]
puts "Last occurrence of $s2 in s1"
puts [string last $s2 $s1]
puts "Word end index in s1"
puts [string wordend $s1 20]
puts "Word start index in s1"
puts [string wordstart $s1 20]

Quando il codice precedente viene compilato ed eseguito, produce il seguente risultato:

First occurrence of o in s1
4
Character at index 0 in s1
H
Last occurrence of o in s1
7
Word end index in s1
11
Word start index in s1
6

Lunghezza della stringa

#!/usr/bin/tclsh

set s1 "Hello World"
puts "Length of string s1"
puts [string length $s1]

Quando il codice precedente viene compilato ed eseguito, produce il seguente risultato:

Length of string s1
11

Casi di manipolazione

#!/usr/bin/tclsh

set s1 "Hello World"
puts "Uppercase string of s1"
puts [string toupper $s1]
puts "Lowercase string of s1"
puts [string tolower $s1]

Quando il codice precedente viene compilato ed eseguito, produce il seguente risultato:

Uppercase string of s1
HELLO WORLD
Lowercase string of s1
hello world

Caratteri di taglio

#!/usr/bin/tclsh

set s1 "Hello World"
set s2 "World"
puts "Trim right $s2 in $s1"
puts [string trimright $s1 $s2]

set s2 "Hello"
puts "Trim left $s2 in $s1"
puts [string trimleft $s1 $s2]

set s1 " Hello World "
set s2 " "
puts "Trim characters s1 on both sides of s2"
puts [string trim $s1 $s2]

Quando il codice precedente viene compilato ed eseguito, produce il seguente risultato:

Trim right World in Hello World
Hello 
Trim left Hello in Hello World
 World
Trim characters s1 on both sides of s2
Hello World

Stringhe corrispondenti

#!/usr/bin/tclsh

set s1 "[email protected]" 
set s2 "*@*.com"
puts "Matching pattern s2 in s1"
puts [string match "*@*.com" $s1 ]
puts "Matching pattern tcl in s1"
puts [string match {tcl} $s1]

Quando il codice precedente viene compilato ed eseguito, produce il seguente risultato:

Matching pattern s2 in s1
1
Matching pattern tcl in s1
0

Aggiungi comando

#!/usr/bin/tclsh

set s1 "Hello" 
append s1 " World"
puts $s1

Quando il codice precedente viene compilato ed eseguito, produce il seguente risultato:

Hello World

Comando di formattazione

La tabella seguente mostra l'elenco degli specificatori di formato disponibili in Tcl -

Specifier Uso
%S Rappresentazione di stringa
% d Rappresentazione intera
% f Rappresentazione in virgola mobile
% e Rappresentazione in virgola mobile con forma esponente mantissa
%X Rappresentazione decimale esadecimale

Di seguito vengono forniti alcuni semplici esempi:

#!/usr/bin/tclsh

puts [format "%f" 43.5]
puts [format "%e" 43.5]
puts [format "%d %s" 4 tuts]
puts [format "%s" "Tcl Language"]
puts [format "%x" 40]

Quando il codice precedente viene compilato ed eseguito, produce il seguente risultato:

43.500000
4.350000e+01
4 tuts
Tcl Language
28

Comando di scansione

Il comando di scansione viene utilizzato per analizzare una stringa in base all'identificatore di formato. Di seguito sono riportati alcuni esempi.

#!/usr/bin/tclsh

puts [scan "90" {%[0-9]} m]
puts [scan "abc" {%[a-z]} m]
puts [scan "abc" {%[A-Z]} m]
puts [scan "ABC" {%[A-Z]} m]

Quando il codice precedente viene compilato ed eseguito, produce il seguente risultato:

1
1
0
1