Chuẩn hóa xâu là một bài tập cơ bản khi học đến phần chuỗi của Pascal. Mục đích của việc chuẩn hóa xâu trong Pascal đó là làm cho xâu trở nên rõ ràng và đúng quy tắc hơn. Mặc dù khi thực hiện chuẩn hóa xâu theo đúng quy tắc viết, sẽ bao gồm nhiều việc như kiểm tra tính đúng sai của câu(🙂 ca này khó), kiểm tra tính đúng sai của các kí tự, dấu câu, kí tự trắng, kí tự viết hoa đầu dòng, ... và nhiều công việc khác, Tuy nhiên, trong phần này ta sẽ chỉ tìm hiểu một trong những yêu cầu cơ bản nhất của bài toán chuẩn hóa xâu đó là:
Chuẩn hóa xâu bằng Pascal
Bài toán yêu cầuNhập một xâu từ bàn phím, xóa dấu cách (kí tự trống) ở đầu và cuối chuỗi, xóa bỏ những kí tự trống không cần thiết và viết hoa chữ cái đầu của chuỗi
Đầu vào : Xâu bất kì từ bàn phím
Đầu ra :
- Xóa bỏ kí tự trống (trắng) đầu dòng
- Xóa bỏ kí tự trống cuối dòng
- Xóa bỏ kí tự trống không hợp lệ
- In hoa chữ cái đầu tiên
99%
theo đề bài.Với bài toán này, các bước đúng có thể sắp xếp như sau:
- Xóa bỏ kí tự trống (trắng) đầu dòng
- Xóa bỏ kí tự trống cuối dòng
- Xóa bỏ kí tự trống không hợp lệ
- In hoa chữ cái đầu tiên
Căn cứ và bài toán trên, ta sẽ sử dụng các hàm và thủ tục sau:
pos()
xác định vị trí xuất hiện đầu tiên của xâu nào đódelete()
xóa xâu bất kì trong xâu vừa nhậpupcase()
in hoa chữ cái nào đólength()
xác định độ dài của xâuprogram codechui;
uses crt;
var xau:string;
begin
write('Nhap xau: ');
readln(xau);
{ Xóa kí tự trắng đầu dòng }
while (xau[1] = ' ') do delete(xau,1,1);
{ Xóa kí tự trắng cuối dòng }
while (xau[length(xau)] = ' ') do delete(xau,length(xau),1);
{ Xóa kí tự trống không hợp lệ }
while (pos(' ',xau) > 0) do delete(xau,pos(' ',xau),1);
{ In hoa chữ cái đầu dòng }
xau[1] := upcase(xau[1]);
write( 'Xau sau khi chuan hoa la: ',xau);
end.
Kết quả:Ý tưởng của bài viết này không quá khó hiểu. Với việc xóa các kí tự trắng ở đầu và cuối, ta chỉ cần sử dụng vòng lặp
Ngoại trừ việc
Để in hoa chữ cái đâu tiên, ta sẽ dùng hàm
while
và kiểm tra điều kiện để thực hiện.Ngoại trừ việc
{ Xóa kí tự trống không hợp lệ }
ta chỉ cần dùng hàm pos()
để kiểm tra xem trong chuỗi nhập vào có tồn tại vị trí nào có đến hai kí tự trắng hay không và trả về vị trí xuất hiện đầu tiên của nó. Nếu có thì xóa bớt 1 kí tự trắng tại vị trí xuất hiện đến hai kí tự trắng đó. Và cũng dùng vòng lặp while
để kiểm tra cho đến khi không còn vị trí nào xuất hiện đến hai kí tự trắng nữa thì dừng lại.Để in hoa chữ cái đâu tiên, ta sẽ dùng hàm
upcase
để in hoa chữ cái đầu tiên , và sau đó gán nó làm kí tự đầu tiên của chuỗi cũ. Vì bản chất xâu chính là một mảng các kí tự nên ta có thể thay đổi giá trị của nó như khi thao tác với mảng.Tạm thời như vậy, thắc mắc gì thì cứ comment cho tui. Bật thông báo nữa, tui rep trong một buổi tối thôi....
Tìm kiếm trên Google: nhập xâu và viết hoa kí tự đầu pascal