Tcl - Cuerdas

El tipo de datos primitivo de Tcl es cadena y, a menudo, podemos encontrar comillas en Tcl como lenguaje de solo cadena. Estas cadenas pueden contener caracteres alfanuméricos, solo números, datos booleanos o incluso binarios. Tcl utiliza caracteres Unicode de 16 bits y los caracteres alfanuméricos pueden contener letras, incluidos caracteres no latinos, números o puntuación.

El valor booleano se puede representar como 1, sí o verdadero para verdadero y 0, no o falso para falso.

Representaciones de cadenas

A diferencia de otros idiomas, en Tcl, no es necesario incluir comillas dobles cuando es una sola palabra. Un ejemplo puede ser:

#!/usr/bin/tclsh

set myVariable hello
puts $myVariable

Cuando se ejecuta el código anterior, produce el siguiente resultado:

hello

Cuando queremos representar múltiples cadenas, podemos usar comillas dobles o llaves. Se muestra a continuación:

#!/usr/bin/tclsh

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

Cuando se ejecuta el código anterior, produce el siguiente resultado:

hello world
hello world

Secuencia de escape de cadena

Un literal de carácter puede ser un carácter simple (por ejemplo, 'x'), una secuencia de escape (por ejemplo, '\ t') o un carácter universal (por ejemplo, '\ u02C0').

Hay ciertos caracteres en Tcl cuando están precedidos por una barra invertida tendrán un significado especial y se usan para representar como nueva línea (\ n) o tabulación (\ t). Aquí tiene una lista de algunos de esos códigos de secuencia de escape:

Secuencia de escape Sentido
\\ \ personaje
\ ' ' personaje
\ " " personaje
\? ? personaje
\un Alerta o campana
\segundo Retroceso
\F Alimentación de formulario
\norte Nueva línea
\ r Retorno de carro
\ t Pestaña horizontal
\ v Pestaña vertical

A continuación se muestra el ejemplo para mostrar algunos caracteres de secuencia de escape:

#!/usr/bin/tclsh

puts "Hello\tWorld\n\nTutorialspoint";

Cuando se compila y ejecuta el código anterior, produce el siguiente resultado:

Hello   World

Tutorialspoint

Comando de cadena

La lista de subcomandos para el comando de cadena se enumera en la siguiente tabla:

No Señor. Métodos y descripción
1

compare cadena1 cadena2

Compara string1 y string2 lexográficamente. Devuelve 0 si es igual, -1 si cadena1 viene antes de cadena2, de lo contrario 1.

2

first cadena1 cadena2

Devuelve la primera aparición del índice de cadena1 en cadena2. Si no se encuentra, devuelve -1.

3

index índice de cadena

Devuelve el carácter en el índice.

4

last cadena1 cadena2

Devuelve el índice de la última aparición de string1 en string2. Si no se encuentra, devuelve -1.

5

length cuerda

Devuelve la longitud de la cadena.

6

match pattern cuerda

Devuelve 1 si la cadena coincide con el patrón.

7

range cadena index1 index2

Devuelve el rango de caracteres en la cadena de index1 a index2.

8

tolower cuerda

Devuelve la cadena en minúsculas.

9

toupper cuerda

Devuelve la cadena en mayúsculas.

10

trim cadena? recortar caracteres?

Elimina los caracteres de recorte en ambos extremos de la cadena. Los caracteres de recorte predeterminados son los espacios en blanco.

11

trimleft cadena? recortar caracteres?

Elimina los caracteres de recorte en el principio izquierdo de la cadena. Los caracteres de recorte predeterminados son los espacios en blanco.

12

trimright cadena? recortar caracteres?

Elimina los caracteres de recorte en el extremo izquierdo de la cadena. Los caracteres de recorte predeterminados son los espacios en blanco.

13

wordend índice de la cadena de búsqueda

Devuelve el índice en la cadena de búsqueda del carácter después de la palabra que contiene el carácter en el índice.

14

wordstart índice de la cadena de búsqueda

Devuelve el índice en la cadena de búsqueda del primer carácter de la palabra que contiene el carácter en el índice.

A continuación se ofrecen ejemplos de algunos subcomandos de cadena Tcl de uso común.

Comparación de cadenas

#!/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\'.";
}

Cuando se compila y ejecuta el código anterior, produce el siguiente resultado:

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

Índice de cadena

#!/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]

Cuando se compila y ejecuta el código anterior, produce el siguiente resultado:

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

Longitud de la cadena

#!/usr/bin/tclsh

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

Cuando se compila y ejecuta el código anterior, produce el siguiente resultado:

Length of string s1
11

Manejo de casos

#!/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]

Cuando se compila y ejecuta el código anterior, produce el siguiente resultado:

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

Recorte de caracteres

#!/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]

Cuando se compila y ejecuta el código anterior, produce el siguiente resultado:

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

Cuerdas a juego

#!/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]

Cuando se compila y ejecuta el código anterior, produce el siguiente resultado:

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

Agregar comando

#!/usr/bin/tclsh

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

Cuando se compila y ejecuta el código anterior, produce el siguiente resultado:

Hello World

Comando de formato

La siguiente tabla muestra la lista de especificadores de formato disponibles en Tcl -

Especificador Utilizar
% s Representación de cadenas
%re Representación entera
%F Representación de punto flotante
%mi Representación de punto flotante con forma de mantisa-exponente
%X Representación decimal hexadecimal

A continuación se ofrecen algunos ejemplos sencillos:

#!/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]

Cuando se compila y ejecuta el código anterior, produce el siguiente resultado:

43.500000
4.350000e+01
4 tuts
Tcl Language
28

Comando de escaneo

El comando de exploración se utiliza para analizar una cadena según el especificador de formato. Algunos ejemplos se muestran a continuación.

#!/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]

Cuando se compila y ejecuta el código anterior, produce el siguiente resultado:

1
1
0
1