Javascript: робота з рядками, функції


Опубликованно 16.02.2018 12:42

Javascript: робота з рядками, функції

Об'єктно-орієнтовані можливості і асоціативні масиви JavaScript як семантичні «каркаси» використання функцій і конструкцій для обробки рядків представляють особливий інтерес для програмування процесів обробки інформації за її смислового змісту. На мові JavaScript функції роботи з рядками можна комбінувати власні смислові конструкції, спрощуючи код і формалізуючи предметну область завдання.

У класичному варіанті обробка інформації - це, передусім, рядкові функції. Кожна функція і конструкція мови має свої особливості в синтаксис і семантику JavaScript. Методи роботи з рядками тут мають свій стиль, але в звичайному застосуванні це просто синтаксис в межах простий семантики: пошук, заміна, вставка, вилучення, контенкация, зміна регістра... Опис рядкових змінних

Для оголошення рядка використовується конструкція var. Можна відразу задати її значення або формувати його в ході виконання алгоритму. Для рядка можна використовувати одинарні або подвійні лапки. Якщо в ній повинна бути лапки, її необхідно екранувати символом «».

Рядок, позначений подвійними лапками, вимагає екранування внутрішніх подвійних лапок. Аналогічно та, що зазначена одинарними, критична до наявності всередині одинарних лапок.

В даному прикладі в рядку «str_dbl» перераховані корисні спеціальні символи, які можна використовувати в рядку. При цьому сам символ «» екранований.Рядок - це масив завжди

Робота JavaScript з рядками може виконуватися безліччю способів. Синтаксис мови надає багато варіантів. В першу чергу ніколи не слід забувати, що (в контексті зроблених описів): str_isV[3] => «V»;str_chr[1] => «'»;str_dbl[5] => «a».

Тобто символи рядка доступні як елементи масиву, при цьому кожен спеціальний символ - це один символ. Екранування - це елемент синтакиса. В реальну рядок ніякої «екран» не поміщається.

Використання функції charAt() дає аналогічний ефект:str_isV.charAt(3) => «V»;str_chr.charAt(1) => «'»;str_dbl.charAt(5) => «a».

Програміст може використовувати будь-який варіант.Основні рядкові функції

В JavaScript робота з рядками виконана дещо інакше, ніж в інших мовах. Ім'я змінної (або безпосередньо рядка) через точку записується ім'я функції. Зазвичай рядкові функції називають методами в стилі синтаксису мови, але перше слово звичніше.

Найважливіший метод рядка (правильніше - властивість) - її довжина.var xStr = str_isV.length + '/' + str_chr.length + '/' + str_dbl.length.

Результат: 11/12/175 по рядках наведеного вище опису.

Найважливіша рядкова пара функцій - поділ рядка на масив елементів і злиття масиву в рядок:split(s [l]);join(s).

У першому випадку рядок розбивається за символом-роздільником «s» на масив елементів, в якому кількість елементів не перевищує значення «l». Якщо кількість не задано, то розбивається весь рядок.

У другому випадку масив елементів зливається в один рядок через заданий роздільник.

Примітна особливість даної пари: розбиття можна здійснювати за одним роздільником, а злиття - з іншого. У цьому контексті В JavaScript робота з рядками може бути виведена за межі» синтаксису мови.Класичні рядкові функції

Загальні функції обробки рядків:пошук;вибірка;заміна;перетворення.

Представлені методами: indexOf(), lastIndexOf(), substr(), substring(), toLowerCase(), toUpperCase(), concan(), charCodeAt() та іншими.

В JavaScript робота з рядками представлена безліччю функцій, але вони дублюють один одного, або залишені для старих алгоритмів і сумісності.

Наприклад, використання методу concat() припустимо, але простіше написати:str = str1 + str2 + str3;

Застосування функції charAt() теж має сенс, а ось застосування charCodeAt() має реальне практичне значення. Аналогічно, для JavaScript перенесення рядка має особливий сенс: у контексті виведення на екран, наприклад, у повідомленні alert() - це « » у конструкції формування контенту сторінки це «<br/>». У першому випадку це просто символ, а в другому - рядок символів.Рядки і регулярні вирази

В JavaScript робота з рядками включає в себе механізм регулярних виразів. Це дозволяє виконувати всередині браузера складні пошуки, вибірки і перетворення рядків без звернення до сервера.

Метод match знаходить, а replace замінює знайдене збіг потрібним значенням. Регулярні вирази реалізовані в JavaScript на високому рівні, по суті своїй, є складними, а зважаючи на специфіку застосування переносять центр ваги з сервера в браузер клієнта.

При застосуванні методів match, search і replace слід не тільки приділити належну увагу тестування на всьому спектрі допустимих значень вихідних параметрів і шуканих рядків, але і оцінити навантаження на браузер.Приклади регулярних виразів

Область застосування регулярних виразів для обробки рядків обширна, але вимагає великої акуратності і уважності від розробника. В першу чергу регулярки знаходять застосування при тестуванні введення користувача в полях форм.

Тут представлені функції, які перевіряють, введення містить ціле число (schInt) або число речовий (schReal). Наступний приклад показує, наскільки ефективно обробляти рядки, перевіряючи їх на наявність тільки припустимих символів: schText - тільки текст, schMail - правильну адресу електронної пошти.

Дуже важливо мати на увазі, що в JavaScript символи та рядки вимагають підвищеної уваги до локалі, особливо коли потрібно працювати з кирилицею. У багатьох випадках доцільно вказувати реальні коди символів, ніж їх значення. Російських букв це стосується в першу чергу.

Слід особливо відзначити, що далеко не завжди слід виконувати завдання, як вона поставлена. Зокрема, щодо перевірки цілих чисел і речових: можна обійтися не класичними малими методами, а звичайними конструкціями синтаксису.Об'єктно-орієнтовані рядка

В JavaScript робота з рядками представлена широким асортиментом функцій. Але це не є вагомою підставою для використання їх в первозданному вигляді. Синтаксис і якість функцій бездоганні, але це універсальне рішення.

Будь-яке застосування рядкових функцій передбачає обробку реального сенсу, який визначається за даними, областю застосування, конкретним призначенням алгоритму.

Ідеальне рішення завжди полягає у тому, щоб інтерпретувати дані за їх змістом.

Представляючи кожен параметр у вигляді об'єкта, можна сформулювати функції для роботи з ним. Завжди мова йде про обробку символів: числа рядка - це конкретним чином організовані послідовності символів.

Є загальні алгоритми, а є приватні. Наприклад, прізвище або номер будинку - це рядки, але якщо в першому випадку допустимі тільки російські букви, то в другому випадку допустимі цифри, російські букви і можуть зустрічатися дефіси або індекси через похилу риску. Індекси можуть бути літерними або цифровими. Будинок може мати корпусу.

Всі ситуації не завжди можна передбачити. Це важливий момент у програмуванні. Рідкісний алгоритм не вимагає доопрацювання, а в більшості випадків доводиться систематично коригувати функціонал.

Формалізація оброблюваної рядкової інформації у вигляді об'єкта покращує читабельність коду, дозволяє вивести його на рівень смислової обробки. Це інша ступінь функціональності і значно кращу якість коду при більшій надійності розробленого алгоритму.



Категория: Техника