Lập trình D - Chuỗi
D cung cấp hai loại biểu diễn chuỗi sau:
- Mảng ký tự
- Chuỗi ngôn ngữ cốt lõi
Mảng ký tự
Chúng ta có thể biểu diễn mảng ký tự theo một trong hai dạng như hình dưới đây. Biểu mẫu đầu tiên cung cấp kích thước trực tiếp và biểu mẫu thứ hai sử dụng phương pháp lặp để tạo bản sao có thể ghi được của chuỗi "Chào buổi sáng".
char[9] greeting1 = "Hello all";
char[] greeting2 = "Good morning".dup;
Thí dụ
Đây là một ví dụ đơn giản sử dụng các dạng mảng ký tự đơn giản ở trên.
import std.stdio;
void main(string[] args) {
char[9] greeting1 = "Hello all";
writefln("%s",greeting1);
char[] greeting2 = "Good morning".dup;
writefln("%s",greeting2);
}
Khi đoạn mã trên được biên dịch và thực thi, nó tạo ra kết quả như sau:
Hello all
Good morning
Chuỗi ngôn ngữ chính
Các chuỗi được tích hợp sẵn trong ngôn ngữ cốt lõi của D. Các chuỗi này có thể tương tác với mảng ký tự được hiển thị ở trên. Ví dụ sau đây cho thấy một biểu diễn chuỗi đơn giản.
string greeting1 = "Hello all";
Thí dụ
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);
}
Khi đoạn mã trên được biên dịch và thực thi, nó tạo ra kết quả như sau:
Hello all
Good morning
Hello all
Kết nối chuỗi
Việc nối chuỗi trong lập trình D sử dụng ký hiệu dấu ngã (~).
Thí dụ
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);
}
Khi đoạn mã trên được biên dịch và thực thi, nó tạo ra kết quả như sau:
Good morning
Good morning
Chiều dài của chuỗi
Độ dài của chuỗi tính bằng byte có thể được truy xuất với sự trợ giúp của phép tính độ dài.
Thí dụ
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);
}
Khi đoạn mã trên được biên dịch và thực thi, nó tạo ra kết quả sau:
Length of string greeting1 is 4
Length of string greeting2 is 7
So sánh chuỗi
So sánh chuỗi khá dễ dàng trong lập trình D. Bạn có thể sử dụng toán tử ==, <, và> để so sánh chuỗi.
Thí dụ
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, "'.");
}
}
Khi đoạn mã trên được biên dịch và thực thi, nó tạo ra kết quả như sau:
s2: World and S3: World are the same!
'Hello' comes before 'World'.
Thay thế chuỗi
Chúng ta có thể thay thế chuỗi bằng chuỗi [].
Thí dụ
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);
}
Khi đoạn mã trên được biên dịch và thực thi, nó tạo ra kết quả như sau:
hello sample
Phương pháp chỉ mục
Các phương thức lập chỉ mục cho vị trí của một chuỗi con trong chuỗi bao gồm indexOf và lastIndexOf được giải thích trong ví dụ sau.
Thí dụ
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));
}
Khi đoạn mã trên được biên dịch và thực thi, nó tạo ra kết quả sau:
indexOf.of llo in hello is 2
hello World
lastIndexOf of O in hello is 7
Xử lý các trường hợp
Các phương pháp được sử dụng để thay đổi các trường hợp được hiển thị trong ví dụ sau.
Thí dụ
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));
}
Khi đoạn mã trên được biên dịch và thực thi, nó tạo ra kết quả sau:
Capitalized string of s1 is Hello world
Uppercase string of s1 is HELLO WORLD
Lowercase string of s1 is hello world
Hạn chế ký tự
Khôi phục các ký tự trong chuỗi được hiển thị trong ví dụ sau.
Thí dụ
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));
}
Khi đoạn mã trên được biên dịch và thực thi, nó tạo ra kết quả sau:
Restrict trailing characters:H123H
Restrict leading characters:ello1
Stripping leading and trailing whitespace:Hello World