Строкові змінні і об’єкт string в javascript (

Будемо вважати, що ви вже ознайомилися зі змінними типу "String" і наступний матеріал не викличе ніяких труднощів.

Почнемо з простого, т. Е. З простих рядків. Як ви вже знаєте, в Java Script зовсім не обов'язково заздалегідь оголошувати тип змінної, а тому будь-яка з них в будь-який момент часу може містити строкове значення. Це значення може містити один або кілька символів. Рядок може містити будь-які символи і повинна бути укладена в лапки. Допускається використання будь-яких типів лапок, як подвійних, так і одинарних. Це дозволяє включати в рядок, власне, самі символи лапок. Ось простий приклад. Треба вивести цей рядок за допомогою сценарію.

Сама ця рядок вже містить пару лапок. Як же бути, як привласнити змінної txt це значення? Дуже просто. Використовуємо інший тип лапок.

Щоб не плутатися в подальшому, краще відразу вибрати якийсь один варіант і використовувати його повсюдно. Отже, головне, щоб рядок оточували лапки одного типу.

Часто потрібно створювати досить довгі рядки, які можуть містити цілі HTML-сторінки. Зрозуміло, що писати такий рядок за один раз досить складно, а під час просто неможливо. Природно, існує спосіб об'єднувати короткі строки в довші. Об'єднання або складання рядків обзивається розумним словом "конкатенація". Зручно використовувати короткі рядки, щоб самому не заплутатися і не помилитися. Та й код виходить легше Новомосковскемим.

З кожною новою рядком до змінної doc додається новий блок даних. Це можна продовжувати, поки туди не залізе вся сторінка або те, що вам потрібно.

Зі статичними рядками все ясно, але найчастіше потрібна вставляти динамічно створювані змінні в виводяться сторінки. Типовий приклад цього - вітання зареєстрованого користувача. Наведемо приклад. До рядку треба додати ім'я, введене користувачем в діалоговому вікні та збережене в змінної name

Як і в інших мовах, в Java Script можна використовувати спеціальні символи в рядках. Це такі символи, як повернення каретки, новий рядок, лапки та інші. Для правильної інтерпретації таких символів браузером, треба проставляти перед ними зворотну косу риску (слеш) "".

Ось найпоширеніші символи.

Створення строкового об'єкта:

Доступ до властивостей і методів статичного об'єкта String:

Доступ до властивостей і методів строкового об'єкта:

опис об'єкта

Може здатися дивним, що частиною посилання на строковий об'єкт може бути будь-який вираз, результатом виконання якого є рядок, що містить звичайні рядки, змінні, методи або функції, які повертають рядки, або інші властивості об'єкта. Тому всі наведені нижче приклади виклику методу toUpperCase () працюють однаково:

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

Тому для зміни вмісту строкової змінної (впливає на результат виконання методу) необхідно скористатися оператором присвоєння:

значення змінної тепер включає тільки великі літери.

constructor

Netscape Navigator 6 +

Internet Explorer 5.5+

При створенні нового рядка конструктором new String () типом значення, що повертається їм, є object (тобто оператор typeof повертає значення object). Тому властивістю constructor можна скористатися для перевірки "строковоcті" об'єкта:

Хоча це властивість призначене для читання і запису, а властивості String.prototype можна привласнити інше значення конструктора, природна поведінка об'єкта String полягає в використанні старого конструктора.

Дивись також властивість prototype.

Значення: целочисленное
Тільки для читання

Netscape Navigator 6 +

Internet Explorer 5.5+

Найбільш часто використовуваним властивістю строкового об'єкта є length. Воно містить довжину рядка. Звернення до нього відбувається так само, як до властивості length будь-якого іншого об'єкта:

Це цілочисельне значення дорівнює кількості символів в рядку. Символами також вважаються прогалини і знаки пунктуації. Всі спеціальні символи, що починаються зі зворотним косою риси, вважаються одиночними, включаючи символи нового рядка і табуляції. Ось кілька прикладів:

Властивість length часто використовується, наприклад, при обробці рядків в циклах.

Netscape Navigator 6 +

Internet Explorer 5.5+

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

Функція makeItHot () накопичує строкові дані, які повертаються в об'єкт, коли вона викликається як метод. Ключове слово this вказує на об'єкт, що викликав функцію, який перетворюється в рядок для подальшої конкатенації. У розділі тіла сторінки прототип методу викликається так само, як і існуючі методи об'єкта String. здатні перетворювати рядки в дескриптори HTML (вони обговорюються далі)

Методи синтаксичного обробки

string.charAt (індекс)

Значення, що повертається: Односимвольна рядок

Netscape Navigator 6 +

Internet Explorer 5.5+

Метод string.charAt () використовується для читання символу, що знаходиться в певній позиції в рядку. Аргументом методу є індекс. Індекс першого символу дорівнює 0. Для отримання останнього символу потрібно скористатися комбінацією строкових методів:

Якщо сценарієм потрібно отримати кілька символів, використовується метод string.substring (). Спроба застосування цього методу для вилучення одного символу є поширеною помилкою, - метод string.charAt () працює набагато ефективніше.

Див. Також методи string.lastIndexOf (), string.indexOf (), string.substring ().

string.charCodeAt ([індекс])
String.fromCharCode (ном1 [, ном2 [. Номn]])

Значення, що повертається: цілочисельний код символу; рядок, конкатенірованная із символів, чиї коди вказані як аргументи.

Netscape Navigator 6 +

Internet Explorer 5.5+

Перетворення символів в числові еквіваленти є давню традицію в програмуванні. Протягом довгого часу застосовувався стандарт ASCII, що описує символи англійського алфавіту, буквено-цифрові символи та символи пунктуації, - всього 128 значень (від 0 до 127). Розширена версія цього стандарту включає 256 символів. Їх точне значення залежить від операційної системи. Зазвичай це додаткові символи інших романських мов. Для того щоб забезпечити підтримку нероманскіх і пиктографических мов, був розроблений стандарт Unicode, що підтримує кілька тисяч різних символів.

Два методу, що виконують перетворення, синтаксично працюють по-різному. Перший, string.charCodeAt (). перетворює один символ рядка в його числовий еквівалент. Конвертована рядок вказується як об'єкт перед ім'ям методу - це може звичайна рядок в лапках або будь-який вираз, результатом якого є рядок. Якщо аргумент методу не вказано, повертається код першого символу рядка. Для обробки іншого символу слід вказати його індекс (індекс першого символу дорівнює 0). наприклад:

Якщо рядок є порожній або значення індексу перебуває за межами допустимого діапазону, результатом виконання методу буде NaN.

Для перетворення числових значень до відповідних їм символи використовується метод String.fromCharCode (). Зверніть увагу, що об'єкт, що викликає метод, є статичним об'єктом String, а не строковим значенням. В якості аргументів можна вказати одне або декілька цілочисельних значень, розділених комами. В процесі перетворення метод об'єднує всі символи в один рядок, як в наступному прикладі:

string.concat (строка2)

Значення, що повертається: комбінація рядків.

Netscape Navigator 6 +

Internet Explorer 5.5+

Як і оператор складання з присвоєнням, метод concat () нічого не знає про закінченнях слів. Тому, якщо потрібно додати пробіл, його слід вказувати явно.

string.indexOf (строкаПоіска [, начІндекс])

Значення, що повертається: індекс першого примірника подстроки searchString в рядку.

Netscape Navigator 6 +

Internet Explorer 5.5+

Див. Також методи string.lastIndexOf (), string.charAt (), string.substring ().

string.lastIndexOf (строкаПоіска [, начІндекс])

Значення, що повертається: індекс останнього символу підрядка searchString в рядку.

Netscape Navigator 6 +

Internet Explorer 5.5+

Метод string.lastIndexOf () тісно пов'язаний з методом string.indexOf (). Різниця полягає в тому, що цей метод починає пошук з кінця рядка (string.length -1) і проводиться в зворотному напрямку. Всі значення індексів відраховуються від 0 - початку рядка. Для порівняння результатів використовуйте ті ж значення, що і в прикладах з string.indexOf (). У рядках, які містять тільки один екземпляр необхідної підрядка, методи повертають однакові результати; там же, де є кілька шуканих примірників, результати методів істотно розрізняються.

Див. Також методи string.indexOf (), string.charAt (), string.substring ().

string.localeCompare (строка2)

Netscape Navigator 6 +

Internet Explorer 5.5+

Метод localeCompare () дозволяє сценарієм порівнювати рядки в кодуванні Unicode, тобто враховуючи використовуваний браузером мову спілкування з користувачами. Необхідність в цьому методі виникає лише в певних мовних системах (наприклад турецької). Якщо рядки є рівними, метод повертає нульове значення. Якщо строкове значення, для якого викликаний метод (перебуває зліва від точки) менше (підраховується сума кодів символів), ніж рядок-аргумент, метод повертає негативне ціле число; в іншому випадку - позитивне.

Стандарт ЕСМА передбачає, що абсолютне значення негативного і позитивного результату залежить від розробників браузера. NN6 підраховує суму Unicode-кодів символів початкового рядка і рядки аргументу, а потім обчислює їх різницю. IE5.5 повертає просто -1 або 1.

Див. Також методи string.toLocaleLowerCase (), string.toLocaleUpperCase ().

string.match (регВираженіе)

Значення, що повертається: масив рядків, що задовольняють шаблоном

Netscape Navigator 6 +

Internet Explorer 5.5+

Див. Також: об'єкт RegExp (Цей довідковий матеріал доступний для скачування в форматі PDF).

string.replace (регВираженіе, строкаЗамени)

Значення, що повертається: змінена рядок.

Netscape Navigator 6 +

Internet Explorer 5.5+

Процес пошуку і заміни вимагає наявності трьох компонент. Першою є вихідна рядок, другий - регулярний вираз, з яким проводиться порівняння, а третій - підрядок, що замінює вихідний блок тексту. У методі string.replace () вихідна рядок вказується зліва від точки. Вона може бути і звичайною рядком в лапках. Регулярний вираз задається в першому аргументі методу, а рядок-замінник - у другому.

Визначення регулярних виразів вказує, як потрібно проводити заміну: тільки в одному збігу або у всіх. Якщо в кінці регулярного виразу додати параметр g. метод replace () проводить глобальні пошук і заміну.

Якщо ви знаєте, як працювати з регулярними виразами, вам буде досить просто користуватися методом string.replace (). Використання регулярних виразів робить операції пошуку і заміни більш потужними. Розглянемо монолог Гамлета:

Якщо потрібно замінити обидва примірники "be" на "exist", то це можна зробити за допомогою оператора

Однак цей підхід не дозволяє переконатися, чи є комбінація букв "И" та "е" окремим словом. А що, наприклад, якщо вихідна рядок містить слова "being" або "saber"? Наведений вище приклад замінює букви "be" і в цих словах.

Регулярні вирази підтримують спеціальні символи, які полегшують рішення цієї проблеми. У наведеному вище прикладі проводиться пошук слова "be". До шуканого висловом необхідно додати символи, що обмежують слово (спеціальні символи \ b), наприклад:

У цьому синтаксисі враховується той факт, що після перших двох символів "be" введені знаки пунктуації, а не тільки прогалини. Більш докладно про синтаксис регулярних виразів розказано в довідковому матеріалі за регулярними виразами (формат PDF).

Див. Також: метод string.match ().

string.search (регВнраженіе)

Значення, що повертається: целочисленное зміщення.

Netscape Navigator 6 +

Функції рядків

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

Лістинг. Функції рядків

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

методи форматування

Спочатку розглянемо методи, які не потребують жодних аргументів. Це, в першу чергу, методи, що встановлюють атрибути шрифтів рядки. У HTML-документі їх зміна досягається парою дескрипторів, наприклад <В>. для напівжирного шрифту. Ці методи додають до строковому об'єкту необхідні дескриптори і повертають текст, готовий до додавання в HTML-код. Тому, наприклад, вираз

"Good morning!" .bold () перетворюється в Good morning!

Звичайно ж, HTML-код можна створювати і без цих методів, вставляючи в нього всі необхідні дескриптори. Одним з достоїнств строкових методів є те, що вони ніколи не забувають поставити закриває дескриптор пари.

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

Лістинг. Використання простих строкових методів

Два наступних методу (string.fontsize () і string.fontcolor ()) також впливають на характеристики шрифту тексту, відображуваного на HTML-сторінці. Аргументи досить очевидні: ціле число в діапазоні від 1 до 7, що задає відносний розмір шрифту, і колір (у вигляді шістнадцятирічного триплета або константи імені кольору) тексту. У наступному лістингу до рядка з попереднього лістингу додається певна рядок тексту. Цей рядок не тільки змінює розмір шрифту певних частин тексту, а й застосовує вкладені атрибути для завдання кольору. Оскільки всі ці методи не змінюють вмісту рядка, їх можна сміливо використовувати як вкладені.

Лістинг. Вкладені рядкові методи.

Два заключних строкових методу дозволяють додати для рядка анкер і посилання. Аргумент методу string.anchor () використовується в якості імені анкера. Тому такий вираз "Table of Contents" .anchor ( "toc") перетворюється в

Подібним чином метод string.link () приймає як параметр URL: "Back to Home" .link ( "index.html") Цей вислів перетвориться в наступне:

Цими методами користуватися необов'язково - адже можна також встановлювати дескриптори HTML вручну. Методи простіше застосовувати, якщо аргументи є змінними, чиї значення залежать від введених користувачем даних.

Кодування і декодування рядків URL

Функція unescape () виконує зворотне перетворення.