Programação D - Strings
D fornece os seguintes dois tipos de representações de string -
- Matriz de caracteres
- String de linguagem principal
Matriz de personagens
Podemos representar a matriz de caracteres em uma das duas formas, conforme mostrado abaixo. O primeiro formulário fornece o tamanho diretamente e o segundo formulário usa o método dup que cria uma cópia gravável da string "Bom dia".
char[9] greeting1 = "Hello all";
char[] greeting2 = "Good morning".dup;
Exemplo
Aqui está um exemplo simples usando os formulários de matriz de caracteres simples acima.
import std.stdio;
void main(string[] args) {
char[9] greeting1 = "Hello all";
writefln("%s",greeting1);
char[] greeting2 = "Good morning".dup;
writefln("%s",greeting2);
}
Quando o código acima é compilado e executado, ele produz um resultado como o seguinte -
Hello all
Good morning
String principal da linguagem
Strings são integrados à linguagem central de D. Essas strings são interoperáveis com a matriz de caracteres mostrada acima. O exemplo a seguir mostra uma representação de string simples.
string greeting1 = "Hello all";
Exemplo
import std.stdio;
void main(string[] args) {
string greeting1 = "Hello all";
writefln("%s",greeting1);
char[] greeting2 = "Good morning".dup;
writefln("%s",greeting2);
string greeting3 = greeting1;
writefln("%s",greeting3);
}
Quando o código acima é compilado e executado, ele produz um resultado como o seguinte -
Hello all
Good morning
Hello all
String Concatenation
A concatenação de strings na programação em D usa o símbolo til (~).
Exemplo
import std.stdio;
void main(string[] args) {
string greeting1 = "Good";
char[] greeting2 = "morning".dup;
char[] greeting3 = greeting1~" "~greeting2;
writefln("%s",greeting3);
string greeting4 = "morning";
string greeting5 = greeting1~" "~greeting4;
writefln("%s",greeting5);
}
Quando o código acima é compilado e executado, ele produz um resultado como o seguinte -
Good morning
Good morning
Comprimento da corda
O comprimento da string em bytes pode ser recuperado com a ajuda da função length.
Exemplo
import std.stdio;
void main(string[] args) {
string greeting1 = "Good";
writefln("Length of string greeting1 is %d",greeting1.length);
char[] greeting2 = "morning".dup;
writefln("Length of string greeting2 is %d",greeting2.length);
}
Quando o código acima é compilado e executado, ele produz o seguinte resultado -
Length of string greeting1 is 4
Length of string greeting2 is 7
Comparação de cordas
A comparação de strings é bastante fácil na programação D. Você pode usar os operadores ==, <e> para comparações de strings.
Exemplo
import std.stdio;
void main() {
string s1 = "Hello";
string s2 = "World";
string s3 = "World";
if (s2 == s3) {
writeln("s2: ",s2," and S3: ",s3, " are the same!");
}
if (s1 < s2) {
writeln("'", s1, "' comes before '", s2, "'.");
} else {
writeln("'", s2, "' comes before '", s1, "'.");
}
}
Quando o código acima é compilado e executado, ele produz um resultado como o seguinte -
s2: World and S3: World are the same!
'Hello' comes before 'World'.
Substituindo Strings
Podemos substituir strings usando a string [].
Exemplo
import std.stdio;
import std.string;
void main() {
char[] s1 = "hello world ".dup;
char[] s2 = "sample".dup;
s1[6..12] = s2[0..6];
writeln(s1);
}
Quando o código acima é compilado e executado, ele produz um resultado como o seguinte -
hello sample
Métodos de Índice
Os métodos de índice para localização de uma substring na string incluindo indexOf e lastIndexOf são explicados no exemplo a seguir.
Exemplo
import std.stdio;
import std.string;
void main() {
char[] s1 = "hello World ".dup;
writeln("indexOf of llo in hello is ",std.string.indexOf(s1,"llo"));
writeln(s1);
writeln("lastIndexOf of O in hello is " ,std.string.lastIndexOf(s1,"O",CaseSensitive.no));
}
Quando o código acima é compilado e executado, ele produz o seguinte resultado -
indexOf.of llo in hello is 2
hello World
lastIndexOf of O in hello is 7
Manuseio de casos
Os métodos usados para alterar os casos são mostrados no exemplo a seguir.
Exemplo
import std.stdio;
import std.string;
void main() {
char[] s1 = "hello World ".dup;
writeln("Capitalized string of s1 is ",capitalize(s1));
writeln("Uppercase string of s1 is ",toUpper(s1));
writeln("Lowercase string of s1 is ",toLower(s1));
}
Quando o código acima é compilado e executado, ele produz o seguinte resultado -
Capitalized string of s1 is Hello world
Uppercase string of s1 is HELLO WORLD
Lowercase string of s1 is hello world
Personagens restritivos
Os caracteres restritos em strings são mostrados no exemplo a seguir.
Exemplo
import std.stdio;
import std.string;
void main() {
string s = "H123Hello1";
string result = munch(s, "0123456789H");
writeln("Restrict trailing characters:",result);
result = squeeze(s, "0123456789H");
writeln("Restrict leading characters:",result);
s = " Hello World ";
writeln("Stripping leading and trailing whitespace:",strip(s));
}
Quando o código acima é compilado e executado, ele produz o seguinte resultado -
Restrict trailing characters:H123H
Restrict leading characters:ello1
Stripping leading and trailing whitespace:Hello World