Thay Đổi Kiểu Chữ và Cắt Khoảng Trắng
Việc xử lý văn bản thường bao hàm việc sử dụng một số thao tác chuẩn, chẳng hạn như chuyển đổi tất cả các ký tự sang chữ cái thường hoặc chữ cái in hoa và loại bỏ các ký tự trống thừa (ví dụ: khoảng trắng) ở đầu hoặc cuối chuỗi. Để phục vụ các mục đích này, API MQL5 cung cấp bốn hàm tương ứng. Tất cả các hàm này sửa đổi chuỗi tại chỗ, tức là trực tiếp trong bộ đệm có sẵn (nếu nó đã được cấp phát).
Tham số đầu vào của tất cả các hàm là tham chiếu đến một chuỗi, nghĩa là chỉ các biến (không phải biểu thức) có thể được truyền vào chúng, và không phải biến hằng vì các hàm này liên quan đến việc sửa đổi đối số.
Script kiểm tra cho tất cả các hàm sẽ được trình bày sau phần mô tả liên quan.
bool StringToLower(string &variable)
Các hàm này chuyển đổi tất cả các ký tự của chuỗi được chỉ định sang kiểu chữ tương ứng: StringToLower
sang chữ cái thường, và StringToUpper
sang chữ cái in hoa. Điều này bao gồm hỗ trợ cho các ngôn ngữ quốc gia có sẵn ở cấp độ hệ thống Windows.
Nếu thành công, hàm trả về true
. Trong trường hợp có lỗi, nó trả về false
.
int StringTrimLeft(string &variable)
Hàm này loại bỏ ký tự trở về đầu dòng (\r
), xuống dòng (\n
), khoảng trắng (), tab (
\t
) và một số ký tự không hiển thị khác ở đầu (đối với StringTrimLeft
) hoặc cuối (đối với StringTrimRight
) của chuỗi. Nếu có khoảng trắng bên trong chuỗi (giữa các ký tự hiển thị), chúng sẽ được giữ nguyên.
Hàm trả về số lượng ký tự đã bị loại bỏ.
Tệp StringModify.mq5
thể hiện hoạt động của các hàm trên.
void OnStart()
{
string text = " \tAbCdE F1 ";
// ↑ ↑ ↑
// | | └2 khoảng trắng
// | └khoảng trắng
// └2 khoảng trắng và tab
PRT(StringToLower(text)); // 'true'
PRT(text); // ' \tabcde f1 '
PRT(StringToUpper(text)); // 'true'
PRT(text); // ' \tABCDE F1 '
PRT(StringTrimLeft(text)); // '3'
PRT(text); // 'ABCDE F1 '
PRT(StringTrimRight(text)); // '2'
PRT(text); // 'ABCDE F1'
PRT(StringTrimRight(text)); // '0' (không còn gì để xóa)
PRT(text); // 'ABCDE F1'
// ↑
// └khoảng trắng bên trong vẫn còn
string russian = "Russian text";
PRT(StringToUpper(russian)); // 'true'
PRT(russian); // 'RUSSIAN TEXT'
string german = "straßenführung";
PRT(StringToUpper(german)); // 'true'
PRT(german); // 'STRAßENFÜHRUNG'
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27