# TypeScript - chuỗi: Hướng dẫn cho người mới bắt đầu

Xin chào, các nhà lập trình tương lai! Hôm nay, chúng ta sẽ bắt đầu một hành trình thú vị vào thế giới của chuỗi trong TypeScript. Là giáo viên máy tính ở khu phố gần bạn, tôi ở đây để hướng dẫn bạn qua khái niệm cơ bản này. Đừng lo lắng nếu bạn chưa bao giờ lập trình trước đây - chúng ta sẽ bắt đầu từ đầu và xây dựng kiến thức từng bước. Vậy, hãy lấy một ly đồ uống yêu thích của bạn, và chúng ta cùng bắt đầu!

## 什么是字符串?

Trước khi chúng ta nhảy vào chi tiết cụ thể của TypeScript, hãy hiểu chuỗi là gì. Trong lập trình, một chuỗi chỉ đơn giản là một序列 các ký tự. Nó có thể là một từ, một câu, hoặc thậm chí cả một đoạn văn. Hãy nghĩ về nó như một "chuỗi" các chữ cái, số hoặc ký hiệu được gắn kết với nhau.

## Tạo chuỗi trong TypeScript

Trong TypeScript, chúng ta có thể tạo chuỗi bằng nhiều cách khác nhau. Hãy cùng nhìn vào các phương pháp phổ biến nhất:

### 1. Sử dụng dấu nháy đơn

```typescript
let greeting: string = 'Hello, World!';
console.log(greeting);

Trong ví dụ này, chúng ta đang tạo một biến chuỗi叫做 greeting và gán giá trị 'Hello, World!' cho nó. Hàm console.log() sau đó in giá trị này ra màn hình.

TypeScript - Strings

2. Sử dụng dấu nháy kép

let name: string = "Alice";
console.log(name);

Câu lệnh này làm điều tương tự như ví dụ trước, nhưng sử dụng dấu nháy kép thay vì dấu nháy đơn. Trong TypeScript, dấu nháy đơn và dấu nháy kép có thể thay thế cho nhau trong chuỗi.

3. Sử dụng dấu backtick (Template Literals)

let age: number = 25;
let introduction: string = `My name is Alice and I am ${age} years old.`;
console.log(introduction);

Đây là phần thú vị! Dấu backtick cho phép chúng ta tạo ra những gì chúng ta gọi là "template literals". Chúng cho phép chúng ta chèn trực tiếp các biểu thức (như biến age) vào trong chuỗi. Cú pháp ${} được sử dụng để chèn giá trị của age vào chuỗi của chúng ta.

Thuộc tính của chuỗi

Bây giờ chúng ta đã biết cách tạo chuỗi, hãy nhìn vào một số thuộc tính của chúng. Thuộc tính được sử dụng phổ biến nhất là length.

let sentence: string = "The quick brown fox jumps over the lazy dog.";
console.log(sentence.length); // Outputs: 44

Thuộc tính length cho chúng ta biết có bao nhiêu ký tự trong chuỗi của chúng ta, bao gồm cả khoảng trống và dấu câu. Nó rất hữu ích khi chúng ta cần biết kích thước của chuỗi.

Phương thức của chuỗi

Các chuỗi trong TypeScript có rất nhiều phương thức内置 cho phép chúng ta manipul và làm việc với chúng. Hãy cùng nhìn vào một số phương thức phổ biến nhất:

Phương thức Mô tả Ví dụ
toLowerCase() Chuyển đổi tất cả các ký tự thành chữ thường "HELLO".toLowerCase() // "hello"
toUpperCase() Chuyển đổi tất cả các ký tự thành chữ in hoa "hello".toUpperCase() // "HELLO"
trim() Loại bỏ khoảng trống ở cả hai đầu của chuỗi " hi ".trim() // "hi"
substring(start, end?) Trích xuất một phần của chuỗi "hello".substring(1, 4) // "ell"
replace(searchValue, replaceValue) Thay thế các wystąpienia của một chuỗi "hello".replace("l", "L") // "heLlo"
split(separator) Chia một chuỗi thành một mảng các substring "a,b,c".split(",") // ["a", "b", "c"]

Hãy nhìn vào các phương thức này trong hành động với một số ví dụ:

let str: string = "   Hello, TypeScript!   ";

// Chuyển đổi thành chữ thường
console.log(str.toLowerCase()); // "   hello, typescript!   "

// Chuyển đổi thành chữ in hoa
console.log(str.toUpperCase()); // "   HELLO, TYPESCRIPT!   "

// Loại bỏ khoảng trống
console.log(str.trim()); // "Hello, TypeScript!"

// Lấy một substring
console.log(str.substring(3, 8)); // "Hello"

// Thay thế một phần của chuỗi
console.log(str.replace("TypeScript", "World")); // "   Hello, World!   "

// Chia chuỗi
console.log(str.trim().split(",")); // ["Hello", " TypeScript!"]

Mỗi phương thức này trả về một chuỗi mới, để lại chuỗi gốc không thay đổi. Đây là một khái niệm quan trọng trong lập trình gọi là "không thể thay đổi".

Ví dụ thực tế

Bây giờ chúng ta đã bao gồm các khái niệm cơ bản, hãy nhìn vào một số ví dụ thực tế nơi manipul chuỗi có thể hữu ích.

1. Xác nhận đầu vào của người dùng

Hãy tưởng tượng bạn đang tạo một biểu mẫu đăng ký và muốn đảm bảo rằng tên người dùng không có khoảng trống ở đầu hoặc cuối:

function validateUsername(username: string): string {
    return username.trim();
}

let input: string = "  alice_smith  ";
let cleanUsername: string = validateUsername(input);
console.log(cleanUsername); // "alice_smith"

2. Tạo một hàm tìm kiếm đơn giản

Hãy tạo một hàm kiểm tra xem một từ cụ thể có trong một câu không:

function searchWord(sentence: string, word: string): boolean {
    return sentence.toLowerCase().includes(word.toLowerCase());
}

let text: string = "The quick brown fox jumps over the lazy dog";
console.log(searchWord(text, "fox")); // true
console.log(searchWord(text, "cat")); // false

Hàm này chuyển đổi cả câu và từ cần tìm thành chữ thường để thực hiện tìm kiếm không phân biệt chữ cái.

3. Định dạng tên

Đây là một hàm định dạng tên đầy đủ từ các đầu vào tên và họ riêng biệt:

function formatName(firstName: string, lastName: string): string {
    return `${firstName.charAt(0).toUpperCase()}${firstName.slice(1).toLowerCase()} ${lastName.toUpperCase()}`;
}

console.log(formatName("john", "doe")); // "John DOE"

Hàm này viết hoa ký tự đầu tiên của tên, chuyển đổi phần còn lại thành chữ thường, và viết hoa toàn bộ họ.

Kết luận

Chúc mừng! Bạn đã vừa bước những bước đầu tiên vào thế giới của chuỗi trong TypeScript. Chúng ta đã bao gồm cách tạo chuỗi, thuộc tính của chúng, và các phương thức phổ biến nhất để manipul chúng. Nhớ rằng, thực hành là chìa khóa của thành công, vì vậy đừng ngần ngại thử nghiệm với các khái niệm này.

Trong những năm dạy học của tôi, tôi đã thấy rằng học sinh nào chơi với mã và cố gắng làm cho mọi thứ bị lỗi thường học nhanh nhất. Vậy hãy tiếp tục, lấy các ví dụ này, thay đổi chúng, và xem会发生什么. Ai biết được? Bạn có thể khám phá ra điều gì mới mẻ và thú vị!

Tiếp tục lập mã, giữ vững sự tò mò, và nhớ rằng: trong thế giới lập trình, mỗi thông báo lỗi chỉ là một cơ hội học tập mới trong trang phục. Chúc bạn lập mã vui vẻ!

Credits: Image by storyset