Перевірити, чи є змінним рядком у JavaScript
У цьому пості ми обговоримо, як перевірити, чи є змінним рядком у JavaScript. Змінна може бути примітивним значенням, або екземпляром стандартного вбудованого об'єкта ECMAScript.
1. Використання typeof оператора
Рекомендоване рішення - використовувати оператор typeof для визначення типу операнда. Це показано нижче:
Typeof оператор поверне object для рядків, створених за допомогою new String() . З цим можна впоратися за допомогою оператора.
2. Використання Object.prototype.toString.call() функція
Інший підхід полягає в тому, щоб знайти клас об'єктів, використовуючи метод toString з Object.prototype . Ви можете використовувати це як:
3. Використання бібліотеки Lodash/Underscore
Якщо ви використовуєте бібліотеку Underscore або Lodash, розгляньте можливість використання _.isString метод, який повертає true для зазначеного значення, є примітивом рядка або рядковим об'єктом.
4. Використання jQuery
З jQuery, $.type() можна використовувати визначення типу об'єкта. Це працює як із примітивними рядковими значеннями, так і з вбудованими об'єктами String. Ось робочий приклад:
Це все, що стосується визначення того, чи є змінним рядком у JavaScript.
Середній рейтинг 4.71/5. Підрахунок голосів: 31
Голосів наразі немає! Будьте першим, хто оцінить цю посаду.
Жаль, що цей пост не виявився для вас корисним!
Розкажіть, як ми можемо покращити цей пост?
Дякую за читання.
Будь ласка, використовуйте наш онлайн компілятор розміщувати код в коментарях, використовуючи C, C++, Java, Python, JavaScript, C#, PHP і багато інших популярних мов програмування.
Як ми? Порадьте нас своїм друзям та допоможіть нам рости. Вдалого кодування :)
Цей веб-сайт використовує файли cookie.Використовуючи цей сайт, ви погоджуєтесь з використанням файлів cookie, нашою політикою, умовами авторського права та іншими умовами. Читайте наші Політика конфіденційності. Зрозуміло
JavaScript: Як перевірити, чи містить рядок підрядок
Звичайною операцією в багатьох мовах програмування є перевірка, чи рядок містить інший рядок. Хоча це просте і поширене завдання, імена методів часто різняться у різних мовах програмування. Наприклад, ось невеликий приклад методів, що використовуються для досягнення цього різними мовами:
- Java: String.contains() , String.indexOf() і т.д.
- Python: оператор in , String.index() , String.find()
- Go: strings.Contains()
- Ruby: string.include?
Сенс має бути зрозумілий. Є мільйон способів зробити це і здається, що кожна мова реалізує це по-своєму.
У будь-якому випадку, давайте подивимося, як можна перевірити, чи містить рядок підрядок у JavaScript.
Перші два методи, наведені нижче, також працюють з масивами, які повідомляють вам, чи містить масив задане значення (або його індекс). Пам'ятайте про це під час читання статті, оскільки вона, ймовірно, допоможе вам у подібних випадках.
String.includes()
Цей метод був введений в ES6 і зазвичай є кращим методом для найпростіших випадків використання. Якщо все, що вам потрібно зробити, це отримати логічне значення, що вказує, чи знаходиться рядок в іншому рядку, то це те, що ви хочете використовувати.
> let str = 'stackabuse'; > let substr = 'stack'; > str.includes(substr); true
Як бачите, повертається логічне значення, оскільки рядок "stack" є підрядком "stackabuse".
Це пошук з урахуванням регістру, тому наступне не відповідатиме підрядку:
> let str = 'StackAbuse'; > let substr = 'stack'; > str.includes(substr); false
Хоча цього достатньо для більшості випадків використання, метод includes() також надає інший варіант, який може бути корисним для вас. Може бути наданий другий аргумент, який повідомляє методу, з якого індексу розпочинати пошук. Тому, якщо ви знаєте, що підрядок не міститься в перших 50 символах (або ви просто не хочете, щоб він відповідав цим символам), то ви можете використовувати метод, подібний до наступного:
str.includes(substr, 50);
Зміщення нижче 0 просто починає пошук з індексу 0, а зміщення більше, ніж string.length, повертає false, оскільки пошук починається з string.length.
String.indexOf()
Метод String.indexOf() дуже схожий на includes() (і його також можна використовувати в polyfill includes() ), але єдина відмінність - це значення, що повертається. Замість того, щоб повертати логічне значення, що вказує на наявність підрядка, він фактично повертає індексне місце підрядка, або -1, якщо його немає.
> let str = 'stackabuse'; > let substr = 'abuse'; > str.indexOf(substr); 5 > str.indexOf('apple'); -1
Як бачите, цей метод повертає позицію індексу підрядка, що починається з на 0, і -1, якщо підрядок не був знайдений.
Як і метод includes() , indexOf() чутливий до регістру і також підтримує параметр зміщення:
> let str = 'StackAbuse'; > let substr = 'abuse'; > str.indexOf(substr); -1 > str.indexOf('Abu', 3); 5 > str.indexOf('Abu', 6); -1
Цей метод корисний, коли вам потрібно знати точне розташування підрядка, однак він не такий чистий, коли просто використовується як логічне значення:
let str = 'stackabuse'; let substr = 'stack'; if (str.indexOf(substr) > -1)
У таких випадках ви повинні використовувати метод includes() , оскільки він більш схильний до помилок.
Regex
Одним з найбільш корисних та потужних способів перевірки підрядка є використання регулярних виразів.Використання регулярних виразів для такого завдання дає вам набагато більше гнучкості, ніж у попередніх методах, де ви можете перевіряти лише постійний рядок. Незважаючи на те, що регулярний вираз є занадто великою темою, щоб повністю охопити тут, ми можемо принаймні подивитися на деякі корисні функції для нашого варіанта використання.
Перевірка на наявність підрядків у рядку з регулярним виразом може бути виконана за допомогою методу RegExp.test() :
> let str = 'stackabuse'; > /stack/.test(str); true
На відміну від двох попередніх методів, тепер ми можемо шукати без урахування регістру з прапором i :
> let str = 'StackAbuse'; > /stack/i.test(str); true
Як складніший приклад, скажімо, ви хочете побачити, чи містить рядок поштовий індекс (5-значний поштовий індекс), але вам не важливо, який поштовий індекс знаходиться в рядку. Таку проблему не можна вирішити за допомогою includes() або indexOf(). Але за допомогою регулярних виразів ми можемо легко перевірити це:
> let str = 'My zip code is 90210'; > /\d/.test(str); true > str = 'My address is 123 Fake St.'; > /\d/.test(str); false
Не дивлячись на те, що JavaScript не такий швидкий як наприклад C, в деяких випадках час виконання скрипту може бути критичним. У цьому випадку RegEx краще замінити на більш простий та легковажний метод includes().