Programación D - Cuerdas
D proporciona los siguientes dos tipos de representaciones de cadenas:
- Matriz de caracteres
- Cadena de idioma principal
Matriz de caracteres
Podemos representar la matriz de caracteres en una de las dos formas que se muestran a continuación. El primer formulario proporciona el tamaño directamente y el segundo formulario utiliza el método dup que crea una copia escribible de la cadena "Buenos días".
char[9] greeting1 = "Hello all";
char[] greeting2 = "Good morning".dup;
Ejemplo
Aquí hay un ejemplo simple usando las formas simples de matriz de caracteres anteriores.
import std.stdio;
void main(string[] args) {
char[9] greeting1 = "Hello all";
writefln("%s",greeting1);
char[] greeting2 = "Good morning".dup;
writefln("%s",greeting2);
}
Cuando se compila y ejecuta el código anterior, produce el siguiente resultado:
Hello all
Good morning
Cadena de idioma principal
Las cadenas están integradas en el lenguaje principal de D. Estas cadenas son interoperables con la matriz de caracteres que se muestra arriba. El siguiente ejemplo muestra una representación de cadena simple.
string greeting1 = "Hello all";
Ejemplo
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);
}
Cuando se compila y ejecuta el código anterior, produce el siguiente resultado:
Hello all
Good morning
Hello all
Concatenación de cadenas
La concatenación de cadenas en la programación D usa el símbolo de tilde (~).
Ejemplo
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);
}
Cuando se compila y ejecuta el código anterior, produce el siguiente resultado:
Good morning
Good morning
Longitud de la cadena
La longitud de la cadena en bytes se puede recuperar con la ayuda de la función de longitud.
Ejemplo
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);
}
Cuando se compila y ejecuta el código anterior, produce el siguiente resultado:
Length of string greeting1 is 4
Length of string greeting2 is 7
Comparación de cadenas
La comparación de cadenas es bastante fácil en la programación D. Puede utilizar los operadores ==, <y> para comparaciones de cadenas.
Ejemplo
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, "'.");
}
}
Cuando se compila y ejecuta el código anterior, produce el siguiente resultado:
s2: World and S3: World are the same!
'Hello' comes before 'World'.
Reemplazo de cuerdas
Podemos reemplazar cadenas usando la cadena [].
Ejemplo
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);
}
Cuando se compila y ejecuta el código anterior, produce el siguiente resultado:
hello sample
Métodos de índice
Los métodos de índice para la ubicación de una subcadena en una cadena, incluidos indexOf y lastIndexOf, se explican en el siguiente ejemplo.
Ejemplo
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));
}
Cuando se compila y ejecuta el código anterior, produce el siguiente resultado:
indexOf.of llo in hello is 2
hello World
lastIndexOf of O in hello is 7
Manejo de casos
Los métodos utilizados para cambiar los casos se muestran en el siguiente ejemplo.
Ejemplo
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));
}
Cuando se compila y ejecuta el código anterior, produce el siguiente resultado:
Capitalized string of s1 is Hello world
Uppercase string of s1 is HELLO WORLD
Lowercase string of s1 is hello world
Restricción de caracteres
La restricción de caracteres en cadenas se muestra en el siguiente ejemplo.
Ejemplo
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));
}
Cuando se compila y ejecuta el código anterior, produce el siguiente resultado:
Restrict trailing characters:H123H
Restrict leading characters:ello1
Stripping leading and trailing whitespace:Hello World