Để trích xuất một phần của chuỗi dựa trên vị trí của một ký tự cụ thể, phương thức substring() kết hợp với indexOf() là giải pháp đơn giản và hiệu quả.
Phương thức str.substring()
substring(startIndex, endIndex) cắt chuỗi từ startIndex (bao gồm) đến endIndex (không bao gồm). Nếu chỉ cung cấp một tham số, nó cắt từ vị trí đó đến cuối chuỗi.
Cú pháp lấy phần SAU ký tự
string.substring(string.indexOf(character) + 1);
indexOf(character) trả về vị trí đầu tiên của ký tự. Cộng 1 để bỏ qua chính ký tự đó.
Cú pháp lấy phần TRƯỚC ký tự
string.substring(0, string.indexOf(character));
Ví dụ hoàn chỉnh
<script>
function layPhanChuoi(str, kyTu, viTri) {
// viTri: 'sau' hoặc 'truoc'
const idx = str.indexOf(kyTu);
if (idx === -1) return str; // Không tìm thấy ký tự
if (viTri === 'sau') {
return str.substring(idx + 1);
} else if (viTri === 'truoc') {
return str.substring(0, idx);
}
return str;
}
// Lấy phần trước '&'
document.write(layPhanChuoi('Tutorix & Tutorialspoint', '&', 'truoc')); // "Tutorix "
document.write('<br>');
// Lấy phần sau ':'
document.write(layPhanChuoi('Tutorix: a best e-learning platform', ':', 'sau')); // " a best e-learning platform"
</script>
Kết quả
Tutorix a best e-learning platform
Lưu ý quan trọng
- Nếu ký tự không tồn tại,
indexOf()trả về -1. Cần kiểm tra trước khi dùng. substring()không thay đổi chuỗi gốc (chuỗi bất biến).- Có thể dùng
split()cho trường hợp đơn giản:str.split(character)[1](phần sau) hoặc[0](phần trước).