Thanh Dương xin chào

24 khách và 0 thành viên

Ảnh ngẫu nhiên

BannerHongAnh.swf 270.jpg Mungxuan.swf Happy_new_year.swf _NGUOI_THAY__NHAT_HUY.swf 01_TIENG_HAT_TU_TP_HO_CHI_MINH.swf Cover201115.jpg Donghosocogiay2chuden.swf Donghosocogiay2chutrang.swf Donghosocogiay12chutrang.swf Donghoso12.swf Donghoso21.swf Donghoso2.swf Donghoso1.swf Donghosocogiay1.swf Donghosocogiay.swf Donghoso.swf Clock_LienBich.swf Ad_cadao.swf Videoplayback_.flv

Tài nguyên dạy học

Điều tra ý kiến

Bạn thấy trang này như thế nào?
Đẹp
Đơn điệu
Bình thường
Ý kiến khác

Sắp xếp dữ liệu

Nhúng mã HTML

Thống kê

  • truy cập   (chi tiết)
    trong hôm nay
  • lượt xem
    trong hôm nay
  • thành viên
  • thống kê truy cập

    free counters
    Gốc > Lập trình Flash >

    Bài 51: Đối tượng String

    Đối tượng String
    [Hoàng Ngọc Giao]

    Trong các chương trình đã viết, bạn đã từng dùng nhiều lần những chuỗi ký tự, gọi tắt là chuỗi (string). Mỗi chuỗi thực chất là một đối tượng thuộc lớp String. Ta hãy tìm hiểu các hàm của lớp String.

    Bạn hãy viết một đoạn mã ngắn như sau trong bảng Actions - Frame của Flash:

    s = "Xin chào";

    for(i = 0; i < s.length; i++)

      trace(s.charAt(i));

    Trong đoạn mã trên, khi gán chuỗi "Xin chào" vào biến s, thực chất bạn đã tạo ra một đối tượng String chứa chuỗi "Xin chào" và cho biến s trỏ đến đối tượng đó. Vòng lặp tiếp theo nhằm dùng thử hàm charAt của lớp String để lấy từng ký tự tại vị trí ứng với chỉ số đã cho. Tương tự như trong một dãy, các vị trí trong một chuỗi được đánh số từ 0 trở đi.
    Bạn chú ý, mọi đối tượng String đều có sẵn biến length bên trong, cho biết chiều dài (tức số ký tự) của chuỗi. Để dùng biến length của đối tượng s, ta viết s.length. Với s là chuỗi "Xin chào", s.length có trị số là 8 (chuỗi "Xin chào" có 8 ký tự). Các vị trí trong chuỗi đó có chỉ số từ 0 đến 7.
    Thử chạy chương trình, bạn có kết quả ở bảng Output:

    X

    i

    n

     

    c

    h

    à

    o

    Hàm trace được gọi tám lần giúp hiển thị từng ký tự, mỗi ký tự trên một dòng.
    Thay vì dùng hàm charAt, bạn hãy thử dùng hàm charCodeAt:

    s = "Xin chào";

    for(i = 0; i < s.length; i++)

      trace(s.charCodeAt(i))

    Khác với hàm charAt, hàm charCodeAt trả về mã số của ký tự tại vị trí đã cho:

    88

    105

    110

    32

    99

    104

    224

    111

    Kết quả cho thấy 88 là mã số của ký tự "X", 105 là mã số của ký tự "i", 110 là mã số của ký tự "n",...
    Bạn có thể hiển thị ký tự từ mã số đã cho. Chẳng hạn, bạn viết thêm câu lệnh như sau:

    s = "Xin chào";

    for(i = 0; i < s.length; i++)

      trace(s.charCodeAt(i))

    trace(String.fromCharCode(88, 105, 110, 32, 99, 104, 224, 111))

    Trong câu lệnh cuối vừa thêm, ta dùng hàm fromCharCode để chuyển các mã số ký tự đã cho thành chuỗi và hiển thị chuỗi đó:

    88

    105

    110

    32

    99

    104

    224

    111

    Xin chào

    Bạn để ý, để gọi hàm fromCharCode của lớp String, ta viết String.fromCharCode, chứ không viết s.fromCharCode. Đó là vì fromCharCode là hàm tĩnh (hàm lớp) nên được gọi thông qua lớp String. Ta không gọi hàm tĩnh fromCharCode thông qua đối tượng String.
    Bạn hãy xóa đoạn mã hiện có và viết đoạn mã mới để tìm hiểu một hàm khác của lớp String:

    s = "Ta nghe ";

    t = "từng bước chân em";

    trace(s.concat(t));

    Trong đoạn mã trên, ta tạo ra hai chuỗi khác nhau và dùng hàm concat của đối tượng s để nối chuỗi s với chuỗi t. Hàm concat được dùng như trên trả về chuỗi mới, bao gồm hai chuỗi đã cho nối với nhau: "Ta nghe từng bước chân em". Chạy thử chương trình, bạn thấy rõ điều đó.
    Sửa đổi chương trình như sau:

    s = "Ta nghe ";

    t = "từng bước chân em\n";

    m = "Xôn xao đường về phố nhỏ.";

    trace(s.concat(t).concat(m));

    và lại chạy thử, bạn thu được kết quả:

    Ta nghe từng bước chân em

    Xôn xao đường về phố nhỏ.

    Khi gọi hàm concat lần đầu, s.concat(t), bạn thu được chuỗi "Ta nghe từng bước chân em". Từ chuỗi đó, ta gọi hàm concat lần nữa với đối mục là m và thu được chuỗi dài hơn. Ký tự "\n" ở cuối chuỗi t là ký tự xuống dòng. Nhờ vậy, bạn thấy chuỗi cuối cùng thu được gồm hai dòng.

    Thay vì gọi hàm concat hai lần như trên, bạn có thể viết khác đi nhưng thu được kết quả tương đương:

    s = "Ta nghe ";

    t = "từng bước chân em\n";

    m = "Xôn xao đường về phố nhỏ.";

    trace(s.concat(t, m));

    Nói chung, hàm concat có thể nhận nhiều đối mục, giúp bạn nối nhiều chuỗi thành một chuỗi dài.
    Tiếp tục tìm hiểu hàm khác của lớp String, bạn xóa đoạn mã hiện có, viết đoạn mã mới:

    s = "Tà áo em bay bay bay bay trong gió nhẹ nhàng.";

    trace(s.indexOf("bay"));

    Việc dùng hàm indexOf trong câu lệnh vừa viết giúp bạn biết được vị trí của từ "bay" đầu tiên trong chuỗi s. Hàm indexOf trong câu lệnh nêu trên dò tìm chỉ số của từ "bay" xuất phát từ đầu chuỗi s. Kết quả hiển thị là 9. Đó là chỉ số của ký tự đầu tiên trong từ "bay" (tức là ký tự "b").
    Nếu muốn biết vị trí của từ "bay" cuối cùng trong chuỗi s, bạn gọi hàm lastIndexOf của lớp String:

    s = "Tà áo em bay bay bay bay trong gió nhẹ nhàng";

    trace(s.indexOf("bay"));

    trace(s.lastIndexOf("bay"));

    Kết quả cho thấy chỉ số của từ "bay" cuối cùng trong chuỗi s là 21. Đó là nhờ hàm lastIndexOf đã dò tìm chỉ số của từ "bay" xuất phát từ cuối chuỗi s.
    Để thấy rõ sự khác biệt của hai hàm indexOf và lastIndexOf, bạn sửa đoạn mã hiện có như sau:

    s = "Tà áo em bay bay bay bay trong gió nhẹ nhàng.";

    i = s.indexOf("bay");

    j = s.lastIndexOf("bay");

    trace(s.slice(0, i));

    trace(s.slice(i, j));

    trace(s.slice(j));

    Trong đoạn mã nêu trên, ta lưu chỉ số của từ "bay" đầu tiên vào biến i, lưu chỉ số của từ "bay" cuối cùng vào biến j. Việc dùng hàm slice của lớp String cho bạn lát cắt của chuỗi đang xét. Kết quả thu được như sau:

    Tà áo em

    bay bay bay

    bay trong gió nhẹ nhàng.

    Khi viết s.slice(0, i), bạn thu được chuỗi mới là một phần của chuỗi s, từ vị trí 0 đến ngay trước vị trí i (ngay trước từ "bay" đầu tiên). Khi viết s.slice(i, j), bạn thu được lát cắt của chuỗi s từ vị trí i đến ngay trước vị trí j (nghĩa là không bao gồm từ "bay" cuối cùng). Khi viết s.slice(j), bạn thu được lát cắt của chuỗi s từ vị trí j (từ "bay" cuối cùng) đến cuối chuỗi s.

    Nhắn tin cho tác giả
    Đỗ Thanh Dương @ 15:30 05/04/2012
    Số lượt xem: 502
    Số lượt thích: 0 người
     
    Gửi ý kiến

    HỖ TRỢ QUẢN TRỊ WEBSITE

    Thay tên website / Chọn thư mục / Mở ra
    Giao diện Module Thư mục Thành viên Tài nguyên Xóa Code
    http://