Bài 12: Kiểu xâu

Nội dung lý thuyết

BÀI 12: KIỂU XÂU

1. Khái niệm

- Xâu là một dãy kí tự trong bảng mã ASCII. Mỗi kí tự được gọi là một phần tử của xâu.

- Số lượng kí tự trong xâu được gọi là độ dài của xâu .

- Xâu có độ dài bằng 0 gọi là xâu rỗng.

- Tham chiếu tới phần tử trong xâu được xác định thông qua chỉ số của phần tử trong xâu.

     <Tên biến xâu>[chỉ số]

- Cách khai báo biến xâu:

     var <tên biến xâu> : string [độ dài lớn nhất của xâu] ;

- Ví dụ:  

  • Ten : String[10] ;
  • Ho_dem : String[50] ;
  • Que : String ;

* Chú ý:

  • Nếu không khai báo độ dài tối đa cho biến xâu kí tự thì độ dài ngầm định của xâu là 255 .
  • Hằng xâu kí tự được đặt trong cặp nháy đơn ‘ ’.

2. Các thao tác xử lí xâu

- Phép ghép xâu: Kí hiệu là dấu cộng (+)

Ví dụ: ‘Ha’  + ‘ Noi’ + ‘ – ’ + ‘Viet Nam’ => cho kết quả là ‘Ha Noi – Viet Nam’

- Phép so sánh: <, <=, >, >=, = , <>.

  • Xâu A là lớn hơn xâu B nếu như kí tự đầu tiên khác nhau giữa chúng kể từ trái sang trong xâu A có mã ASCII lớn hơn
  • Nếu A và B là các xâu có độ dài khác nhau và A là đoạn đầu của B thì A là nhỏ hơn B.
  • Hai xâu được coi là bằng nhau nếu chúng hoàn toàn giống nhau.
  • Ví dụ: 
    • (‘ABC’=’ABC’).
    • (‘ABCDEF’<’ABCFGH’).
    • (‘ABC’<’ABCDEF’).

- Một số thủ tục chuẩn dùng để xử lí xâu:

  • Hàm Delete(St,vt,n) Xoá n kí tự của xâu st bắt đầu từ vị trí vt. Ví dụ: 

     Var St: String[20];
     Begin
          St := ‘CHUOI CHUA BI CAT’;
          St := Delete(St,6,5);
          Write(St);
     End.

  • Hàm Insert(S1,S2,vt): Chèn xâu S1 vào xâu S2 bắt đầu từ vị trí vt của S2. Ví dụ:

     Var St, Obj: String[20];
     Begin
          St := ‘CHUOI THEM’;
          Obj := ‘DA  ’;
          Insert(obj,St,7);
          Write(St);
     End.

  •  Hàm Val(St,x,m): Đổi giá trị xâu St thành số ghi giá trị vào biến X, nến không đổi được thì vị trí gây lỗi ghi trong m, nếu đổi thành công thì m = 0. Ví dụ:

     Var  St: String[20];
          X: Real;
          Code: Integer;
     Begin
          St := ‘789.789’;
          
Val(St, X, Code);
          Writeln(‘X = ’ ,X, ’ ; Code = ‘ , Code);
          St := ‘789A789’;
          Val(St, X, Code);
          Writeln(‘X = ’ ,X, ’ ; Code = ‘ , Code);
     End.

  • Hàm Str(X, St): Chuyển số X thành xâu kí tự lưu trong St. Ví dụ:

     Var St: String[20]; S: Real;
     Begin

          S := 987987987;
          Str(S:9:0,St);
          Write(St);
     End.

  • Hàm Length(St): Cho kết quả là một số nguyên chỉ độ dài của chuỗi (số ký tự của chuỗi). Ví dụ: Để viết một dòng ở giữa màn hình ta làm như sau: 

     GotoXY((80-Length(st))div 2, 12);
           Write(st);

  • Hàm Copy(St, Pos, n)Kết quả trả về của hàm là một chuỗi, trích từ chuỗi St, chéptừ ví trí Pos và chép n ký tự. Ví dụ:

     Var St, Obj: String[20];
     Begin
          St := ‘TURBO PASCAL 7.0’;
          Obj := Copy(st,7,6);
          Write(Obj);
     End.

  • Hàm Concat(St1, St2, St3,…Stn)Cho kết quả là một chuỗi mới được ghép từ các chuỗi St1, St2, St3,…, Stn theo thứ tự truyền vào hàm. Kết quả này giống như phép cộng chuỗi.

  • Hàm Pos(Obj, St)Cho kết quả là một vị trí đầu tiên của Obj trong chuỗi St. Nếu không tìm thấy thì hàm trả về kết quả là 0. Ví dụ: 

     Var St, Obj: String[20];
     Begin
          St := ‘TURBO PASCAL 7.0’;
          Obj := ‘PASCAL’;
          Write(Pos(Obj, St));
     End.

  • Hàm Pos(S1, S2): Tìm vị trí xuất hiện đầu tiên của S1 trong S2.
  • Hàm Upcase(ch): Cho chữ cái viết hoa tưng ứng với chữ thường trong ch.