JS об'єкт String
Введення до об'єкта String
String - це вбудований об'єкт у JavaScript, який представляє рядок символів. Рядки використовуються для зберігання текстових даних, що можуть бути відображені у текстовому форматі. На відміну від масивів, де кожен елемент зберігає одне значення, рядки зберігають послідовність символів.
Створення рядків
Існує кілька способів створити рядок в JavaScript. Один із них - використовувати літерали рядків:
const string1 = "Це рядок";
const string2 = 'Це теж рядок';
const string3 = `Це ще один рядок`;
Кожен з цих літералів представляє рядок. Вони можуть використовуватися взаємозамінно, але з `` можна виконувати інтерполяцію рядків - це коли ви вставляєте змінні безпосередньо в рядок. Наприклад:
const name = "Олексій";
const greetings = `Привіт, ${name}!`;
console.log(greetings); // Виведе: "Привіт, Олексій!"
Робота з рядками
Коли у вас є рядок, ви можете виконувати різноманітні операції: додавання рядків, доступ до окремих символів, пошук підрядків тощо.
Для додавання двох рядків можна використовувати оператор +:
const string1 = "Привіт, ";
const string2 = "світе!";
console.log(string1 + string2); // Виведе: "Привіт, світе!"
Для доступу до конкретного символу в рядку можна використовувати метод charAt() або квадратні дужки:
const text = "абрикос";
console.log(text.charAt(3)); // Виведе: "и"
console.log(text[3]); // Також виведе: "и"
Розширені можливості рядків
Рядки в JavaScript мають багато вбудованих методів, що допомагають виконувати різноманітні операції. Наприклад, метод substring() дозволяє витягти підрядок з поточного рядка:
const word = "парасолька";
const text = word.substring(2, 8);
console.log(text); // Виведе: "расоль"
Інший корисний метод - indexOf(), який повертає індекс першого входження підрядка:
const text = "Веселий, веселий день.";
console.log(text.indexOf("веселий")); // Виведе: 9
автор: Bond
Операції з рядками
Рядки в JavaScript - це більше, ніж просто послідовності символів. Завдяки великій кількості методів, які надає об'єкт String, можливо виконувати ряд сложних операцій з рядками.
Конкатенація рядків
Однією з основних операцій з рядками є їх об'єднання, або конкатенація. Це можна зробити за допомогою оператора +:
const chunk1 = "Коли розум";
const chunk2 = " мовчить, говорить серце.";
const common = chunk1 + chunk2;
console.log(common); // Виведе: "Коли розум мовчить, говорить серце."
В цьому прикладі ми об'єднали два рядки, використовуючи оператор +. Результат - новий рядок, який є комбінацією двох попередніх.
Доступ до символів
Щоб отримати доступ до конкретного символу в рядку, можна використовувати метод charAt() або квадратні дужки:
const word = "циркуль";
console.log(word.charAt(4)); // Виведе: "у"
console.log(word[4]); // Також виведе: "у"
Тут ми отримали доступ до п'ятого символу в рядку (індексація починається з 0), використовуючи обидва доступних метода.
Пошук в рядку
Щоб знайти підрядок в межах більшого рядка, можна використовувати метод indexOf():
const sentence = "Сонце світить яскраво і високо.";
const position = sentence.indexOf("яскраво");
console.log(position); // Виведе: 11
У цьому прикладі ми шукали підрядок "яскраво" в рядку. Метод повернув позицію першого символу цього підрядка в більшому рядку.
Заміна підрядка
Щоб замінити частину рядка іншою стрічкою, можна використовувати метод replace():
const text = "Котик грає на гітарі.";
const new_text = text.replace("гітарі", "барабанах");
console.log(new_text); // Виведе: "Котик грає на барабанах."
Тут ми замінили підрядок "гітарі" на "барабанах", використовуючи метод replace().
Розбиття рядка
Щоб розбити рядок на масив підрядків за певним роздільником, можна використовувати метод split():
const phrase = "Яблуко, апельсин, банан";
const found = phrase.split(", ");
console.log(found); // Виведе: ["Яблуко", "апельсин", "банан"]
Тут ми розділили рядок на масив підрядків, використовуючи кому та пробіл як роздільники.
автор: Bond
- Порада
-
Не змінюйте рядки напряму! Рядки в JavaScript є незмінними. Кожна операція, яка "змінює" рядок, насправді створює новий рядок.
автор: Bond - Порада
-
Уникайте використання
автор: BondStringяк конструктора. Це може призвести до плутанини, оскільки типи об'єктів та примітивів відрізняються. - Нотатка
-
Будьте обережні при порівнянні рядків. Оператори порівняння (
==,===,<,>) розглядають рядки як чутливі до регістру. Для порівняння незалежно від регістру використовуйте методиtoUpperCaseабоtoLowerCase.const str1 = "Привіт"; const str2 = "привіт"; console.log(str1.toLowerCase() === str2.toLowerCase()); // trueВ цьому прикладі ми перетворили обидва рядки на нижній регістр перед порівнянням, щоб зробити їх незалежними від регістру.
автор: Bond - Нотатка
-
Будьте уважні з локалізацією: Якщо ваша програма працює з різними мовами, використовуйте методи, які є чутливими до локалізації, такі як
localeCompare.const str1 = "Straße"; const str2 = "Strasse"; console.log(str1.localeCompare(str2, 'de-DE')); // -1В цьому прикладі ми використовуємо
автор: BondlocaleCompareдля порівняння двох німецьких слів в контексті німецької локалізації.
Синтаксис
let string = 'text';
let string = "text";
let string = `text`;
let string = new String("text");
методи
| Метод | Опис |
|---|---|
| at | Повертає символ за зазначеним індексом. |
| charAt | Повертає символ у рядку за вказаним індексом. |
| charCodeAt | Повертає числове значення Unicode для символу, що стоїть на вказаній позиції у рядку. |
| codePointAt | Повертає числове значення Unicode для символу, розташованого на вказаній позиції в рядку. |
| concat | Об'єднує два або більше рядків, утворюючи новий рядок. |
| endsWith | Перевіряє, чи закінчується рядок певним підрядком. |
| fromCharCode | Перетворює набір числових кодів Unicode у відповідний рядок. |
| constructor | Створює новий рядковий об'єкт з вказаного значення. |
| includes | Провіряє, чи міститься заданий підрядок у вихідному рядку. |
| indexOf | Повертає індекс першого входження заданого підрядка в рядку. |
| lastIndexOf | Знаходить індекс останнього входження заданого підрядка в рядку. |
| localeCompare | Порівнює рядок з іншим рядком, враховуючи локальні особливості мови. |
| match | Здійснює пошук у рядку за допомогою регулярного виразу. |
| search | Здійснює пошук заданого шаблону регулярного виразу в рядку. |
| replace | Замінює зазначений фрагмент у рядку на інший рядок або результат виконання функції. |
| repeat | Створює новий рядок шляхом повторення існуючого рядка задану кількість разів. |
| padStart | Додає символи на початок рядка до досягнення заданої довжини, повертаючи новий рядок. |
| padEnd | Перетворює рядок на вказану довжину, додаючи символи на кінець рядка. |
| slice | Виділяє та повертає підрядок із заданого рядка, використовуючи початковий та кінцевий індекси. |
| split | Перетворює рядок на масив підрядків, розділяючи його за вказаним роздільником. |
| startsWith | Перевіряє, чи починається рядок зазначеним підрядком. |
| substr | Витягує підрядок із рядка, починаючи з вказаної позиції та має вказану довжину. |
| substring | Витягує підрядок з рядка між двома вказаними індексами. |
| toLocaleUpperCase | Перетворює рядок у верхній регістр з урахуванням локалі. |
| toLocaleLowerCase | Перетворює всі символи рядка на нижній регістр, з урахуванням локальних особливостей мови. |
| toLowerCase | Перетворює всі символи рядка на малі літери. |
| toString | Перетворює об'єкт рядка на примітивний рядковий тип. |
| toUpperCase | Перетворює всі символи рядка на великі літери. |
| trim | Видаляє пробільні символи з початку та кінця рядка. |
| trimEnd | Видаляє пробільні символи з кінця рядка. |
| trimStart | Видаляє пробільні символи з початку рядка. |
| valueOf | Повертає примітивне значення рядка. |
властивості
| Властивість | Опис |
|---|---|
| prototype | Створює та маніпулює рядками тексту в JavaScript. |
Переглядачі
| Переглядач | |||||
|---|---|---|---|---|---|
| 1 | 1 | 1 | 3 | 12 |
| Переглядач | ||||
|---|---|---|---|---|
| 4.4 | 18 | 4 | 1 |
| Переглядач | ||
|---|---|---|
| 0.10.0 | 1.0 |
Приклади
+ запропонувати свій приклад у пісочниці
Перетворення першої літери рядка в верхній регістр. Це корисно, наприклад, при форматуванні імен, або коли потрібно зробити текст більш читабельним.
У цьому прикладі метод charAt(0) вибирає перший символ рядка, а toUpperCase() перетворює його в верхній регістр. Метод slice(1) видаляє перший символ з оригінального рядка, а потім ми об'єднуємо обидва рядки.
function capitalizeFirstLetter(string) {
return string.charAt(0).toUpperCase() + string.slice(1);
}
const name = "john";
const capitalizedName = capitalizeFirstLetter(name);
console.log(capitalizedName); // Виведе: "John"
Пошук підрядка в рядку та виведення контексту. Це може бути корисно, наприклад, при розробці пошукових функцій в текстових редакторах.
Метод indexOf() знаходить позицію підрядка subStr у рядку. Потім, використовуючи slice(), ми вирізаємо частину рядка навколо знайденого підрядка, додаючи контекст.
function findSubstringContext(str, subStr, context = 5) {
const index = str.indexOf(subStr);
if (index === -1) return "Substring not found";
const start = Math.max(0, index - context);
const end = Math.min(str.length, index + subStr.length + context);
return str.slice(start, end);
}
const text = "The quick brown fox jumps over the lazy dog";
const context = findSubstringContext(text, "fox");
console.log(context); // Виведе: "quick brown fox jumps o"
Заміна заборонених слів в тексті на "зірочки". Це може бути корисно для автоматичної модерації тексту на форумах, у чатах тощо.
Тут ми використовуємо регулярні вирази (задані за допомогою RegExp) для знаходження заборонених слів у рядку, незалежно від регістра (за допомогою прапорця "gi"). Метод replace() замінює знайдені заборонені слова на рядок з "зірочок".
function censorText(text, forbiddenWords) {
let censoredText = text;
for (const word of forbiddenWords) {
const regex = new RegExp(word, "gi");
const replacement = '*'.repeat(word.length);
censoredText = censoredText.replace(regex, replacement);
}
return censoredText;
}
const comment = "This is a nasty comment with bad words.";
const forbidden = ["nasty", "bad"];
const censoredComment = censorText(comment, forbidden);
console.log(censoredComment); // Виведе: "This is a ***** comment with *** words."
Коментарі
Коментарів ще немає — будьте першим!