Tcl - Strings

O tipo de dados primitivo de Tcl é string e freqüentemente podemos encontrar aspas em Tcl como linguagem apenas de string. Essas strings podem conter caracteres alfanuméricos, apenas números, dados booleanos ou até dados binários. Tcl usa caracteres Unicode de 16 bits e os caracteres alfanuméricos podem conter letras, incluindo caracteres não latinos, número ou pontuação.

O valor booleano pode ser representado como 1, sim ou verdadeiro para verdadeiro e 0, não ou falso para falso.

Representações de String

Ao contrário de outras línguas, em Tcl, você não precisa incluir aspas duplas quando é apenas uma palavra. Um exemplo pode ser -

#!/usr/bin/tclsh

set myVariable hello
puts $myVariable

Quando o código acima é executado, ele produz o seguinte resultado -

hello

Quando queremos representar várias strings, podemos usar aspas duplas ou chaves. É mostrado abaixo -

#!/usr/bin/tclsh

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

Quando o código acima é executado, ele produz o seguinte resultado -

hello world
hello world

Sequência de escape da corda

Um literal de caractere pode ser um caractere simples (por exemplo, 'x'), uma seqüência de escape (por exemplo, '\ t') ou um caractere universal (por exemplo, '\ u02C0').

Existem certos caracteres em Tcl quando eles são precedidos por uma barra invertida, eles têm um significado especial e são usados ​​para representar como nova linha (\ n) ou tabulação (\ t). Aqui, você tem uma lista de alguns desses códigos de sequência de escape -

Sequência de fuga Significado
\\ \ personagem
\ ' ' personagem
\ " " personagem
\? ? personagem
\uma Alerta ou sino
\ b Backspace
\ f Feed de formulário
\ n Nova linha
\ r Retorno de carruagem
\ t Aba horizontal
\ v Guia vertical

A seguir está o exemplo para mostrar alguns caracteres da sequência de escape -

#!/usr/bin/tclsh

puts "Hello\tWorld\n\nTutorialspoint";

Quando o código acima é compilado e executado, ele produz o seguinte resultado -

Hello   World

Tutorialspoint

String Command

A lista de subcomandos para o comando string está listada na seguinte tabela -

Sr. Não. Métodos e Descrição
1

compare string1 string2

Compara string1 e string2 lexograficamente. Retorna 0 se igual, -1 se string1 vem antes de string2, caso contrário, 1.

2

first string1 string2

Retorna a primeira ocorrência do índice de string1 em string2. Se não for encontrado, retorna -1.

3

index índice de string

Retorna o caractere no índice.

4

last string1 string2

Retorna a última ocorrência do índice de string1 em string2. Se não for encontrado, retorna -1.

5

length corda

Retorna o comprimento da string.

6

match pattern corda

Retorna 1 se a string corresponder ao padrão.

7

range string index1 index2

Retorna o intervalo de caracteres na string de índice1 a índice2.

8

tolower corda

Retorna a string em minúsculas.

9

toupper corda

Retorna a string maiúscula.

10

trim string? trimcharacters?

Remove trimcharacter em ambas as extremidades da string. O trimcharacter padrão é o espaço em branco.

11

trimleft string? trimcharacters?

Remove trimcharacter no início esquerdo da string. O trimcharacter padrão é o espaço em branco.

12

trimright string? trimcharacters?

Remove trimcharacter na extremidade esquerda da string. O trimcharacter padrão é o espaço em branco.

13

wordend índice findstring

Retorna o índice em findstring do caractere após a palavra que contém o caractere no índice.

14

wordstart índice findstring

Retorna o índice em findstring do primeiro caractere na palavra que contém o caractere no índice.

Exemplos de alguns subcomandos de string Tcl comumente usados ​​são fornecidos abaixo.

Comparação de cordas

#!/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 o código acima é compilado e executado, ele produz o seguinte resultado -

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

Índice de String

#!/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 o código acima é compilado e executado, ele produz o seguinte 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

Comprimento da corda

#!/usr/bin/tclsh

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

Quando o código acima é compilado e executado, ele produz o seguinte resultado -

Length of string s1
11

Manuseio 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]

Quando o código acima é compilado e executado, ele produz o seguinte resultado -

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

Cortando 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]

Quando o código acima é compilado e executado, ele produz o seguinte 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

Matching Strings

#!/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 o código acima é compilado e executado, ele produz o seguinte resultado -

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

Append Command

#!/usr/bin/tclsh

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

Quando o código acima é compilado e executado, ele produz o seguinte resultado -

Hello World

Comando de formatação

A tabela a seguir mostra a lista de especificadores de formato disponíveis em Tcl -

Especificador Usar
% s Representação de string
% d Representação inteira
% f Representação de ponto flutuante
% e Representação de ponto flutuante com forma expoente de mantissa
% x Representação decimal hexa

Alguns exemplos simples são fornecidos abaixo -

#!/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 o código acima é compilado e executado, ele produz o seguinte resultado -

43.500000
4.350000e+01
4 tuts
Tcl Language
28

Comando de digitalização

O comando Scan é usado para analisar uma string com base no especificador de formato. Alguns exemplos são mostrados abaixo.

#!/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 o código acima é compilado e executado, ele produz o seguinte resultado -

1
1
0
1