Programmazione D - Stringhe
D fornisce i seguenti due tipi di rappresentazioni di stringhe:
- Matrice di caratteri
- Stringa della lingua principale
Character Array
Possiamo rappresentare l'array di caratteri in una delle due forme come mostrato di seguito. Il primo modulo fornisce direttamente la dimensione e il secondo modulo utilizza il metodo dup che crea una copia scrivibile della stringa "Good morning".
char[9] greeting1 = "Hello all";
char[] greeting2 = "Good morning".dup;
Esempio
Ecco un semplice esempio che utilizza le forme di matrice di caratteri semplici sopra.
import std.stdio;
void main(string[] args) {
char[9] greeting1 = "Hello all";
writefln("%s",greeting1);
char[] greeting2 = "Good morning".dup;
writefln("%s",greeting2);
}
Quando il codice precedente viene compilato ed eseguito, produce un risultato come segue:
Hello all
Good morning
Stringa del linguaggio di base
Le stringhe sono integrate nel linguaggio principale di D. Queste stringhe sono interoperabili con l'array di caratteri mostrato sopra. L'esempio seguente mostra una semplice rappresentazione di stringa.
string greeting1 = "Hello all";
Esempio
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 il codice precedente viene compilato ed eseguito, produce un risultato come segue:
Hello all
Good morning
Hello all
Concatenazione di stringhe
La concatenazione di stringhe nella programmazione D utilizza il simbolo tilde (~).
Esempio
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 il codice precedente viene compilato ed eseguito, produce un risultato come segue:
Good morning
Good morning
Lunghezza della stringa
La lunghezza della stringa in byte può essere recuperata con l'aiuto della funzione di lunghezza.
Esempio
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 il codice precedente viene compilato ed eseguito, produce il seguente risultato:
Length of string greeting1 is 4
Length of string greeting2 is 7
Confronto tra stringhe
Il confronto delle stringhe è abbastanza semplice nella programmazione D. È possibile utilizzare gli operatori ==, <e> per i confronti tra stringhe.
Esempio
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 il codice precedente viene compilato ed eseguito, produce un risultato come segue:
s2: World and S3: World are the same!
'Hello' comes before 'World'.
Sostituzione delle stringhe
Possiamo sostituire le stringhe usando la stringa [].
Esempio
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 il codice precedente viene compilato ed eseguito, produce un risultato come segue:
hello sample
Metodi di indice
I metodi di indicizzazione per la posizione di una sottostringa in una stringa inclusi indexOf e lastIndexOf sono spiegati nell'esempio seguente.
Esempio
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 il codice precedente viene compilato ed eseguito, produce il seguente risultato:
indexOf.of llo in hello is 2
hello World
lastIndexOf of O in hello is 7
Casi di manipolazione
I metodi utilizzati per cambiare i casi sono mostrati nel seguente esempio.
Esempio
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 il codice precedente viene compilato ed eseguito, produce il seguente risultato:
Capitalized string of s1 is Hello world
Uppercase string of s1 is HELLO WORLD
Lowercase string of s1 is hello world
Caratteri restrittivi
La restrizione dei caratteri nelle stringhe viene mostrata nell'esempio seguente.
Esempio
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 il codice precedente viene compilato ed eseguito, produce il seguente risultato:
Restrict trailing characters:H123H
Restrict leading characters:ello1
Stripping leading and trailing whitespace:Hello World