|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Преобразование символов в числовые эквиваленты представляет собой давнюю традицию в программировании. В течение долгого времени применялся стандарт ASCII, описывающий символы английского алфавита, буквенно-цифровые символы и символы пунктуации,- всего 128 значений (от 0 до 127). Расширенная версия этого стандарта включает 256 символов. Их точное значение зависит от операционной системы. Обычно это дополнительные символы других романских языков. Для того чтобы обеспечить поддержку нероманских и пиктографических языков, был разработан стандарт Unicode, поддерживающий несколько тысяч различных символов. В JavaScript преобразование символов в коды достигается с помощью строковых методов. Допустимые значения зависят от конкретной версии браузера. NN4 работает только с 256 символами стандарта ISO-Latin-I; NN6 и IE4+ поддерживают систему Unicode. Два метода, выполняющих преобразование, синтаксически работают по-разному. Первый, string.charCodeAt(), преобразует один символ строки в его числовой эквивалент. Конвертируемая строка указывается как объект перед именем метода - это может обычная строка в кавычках или любое выражение, результатом которого является строка. Если аргумент метода не указан, возвращается код первого символа строки. Для обработки другого символа следует указать его индекс (индекс первого символа равен 0). Например: "abc".charCodeAt() // результат - 97 "abc".charCodeAt(0) // результат = 97 "abc".charCodeAt(1) // результат = 98 Если строка является пустой или значение индекса находится за пределами допустимого диапазона, результатом выполнения метода будет NaN. Для преобразования числовых значений в соответствующие им символы используется метод String.fromCharCode(). Обратите внимание, что объект, вызывающий метод, является статическим объектом String, а не строковым значением. В качестве аргументов можно указать одно или несколько целочисленных значений, разделенных запятыми. В процессе преобразования метод объединяет все символы в одну строку, как в следующем примере: String.fromCharCode(97, 98, 99) // результат "abc" string.concat(строка2)Возвращаемое значение: комбинация строк.
Оператор сложения с присвоением (+=) в JavaScript обеспечивает удобный способ конкатенации строк. Современные браузеры поддерживают строковый метод, выполняющий ту же задачу. Строка, к которой добавляется текст, является объектом или значением, вызывающим метод. Добавляемая строка является аргументом метода, как показано в следующем примере: "abc".concat("def") // результат: "abcdef" Как и оператор сложения с присвоением, метод concat() ничего не знает об окончаниях слов. Поэтому, если требуется добавить пробел, его следует указывать явно. string.indexOf(строкаПоиска [, начИндекс])Возвращаемое значение: индекс первого экземпляра подстроки searchString в строке.
Метод JavaScript indexOf(), наподобие строковых функций в других языках, возвращает индекс первого символа указанной подстроки в строке. Дополнительный аргумент метода указывает позицию начала поиска. Возвращаемое значение всегда отсчитывается от начала строки - от 0, как и для других строковых методов. Если в строке нет данной подстроки, метод возвращает -1. Этот метод используется для поиска экземпляров подстроки в строке. См. также методы string.lastIndexOf(), string.charAt(), string.substring(). string.lastIndexOf(строкаПоиска [, начИндекс])Возвращаемое значение: индекс последнего символа подстроки searchString в строке.
Метод string.lastIndexOf() тесно связан с методом string.indexOf(). Разница заключается в том, что этот метод начинает поиск с конца строки (string.length -1) и проводится в обратном направлении. Все значения индексов отсчитываются от 0 - начала строки. Для сравнения результатов используйте те же значения, что и в примерах с string.indexOf(). В строках, которые содержат только один экземпляр требуемой подстроки, методы возвращают одинаковые результаты; там же, где имеется несколько искомых экземпляров, результаты методов существенно различаются. См. также методы string.indexOf(), string.charAt(), string.substring(). string.localeCompare(строка2)
Метод localeCompare() позволяет сценарию сравнивать строки в кодировке Unicode, т.е., учитывая используемый браузером язык общения с пользователями. Необходимость в этом методе возникает лишь в определенных языковых системах (например турецкой). Если строки являются равными, метод возвращает нулевое значение. Если строковое значение, для которого вызван метод (находящееся слева от точки) меньше (подсчитывается сумма кодов символов), чем строка-аргумент, метод возвращает отрицательное целое число; в ином случае - положительное. Стандарт ЕСМА предполагает, что абсолютное значение отрицательного и положительного результата зависит от разработчиков браузера. NN6 подсчитывает сумму Unicode-кодов символов исходной строки и строки аргумента, а затем вычисляет их разность. IE5.5 возвращает просто -1 или 1. См. также методы string.toLocaleLowerCase(), string.toLocaleUpperCase(). string.match(регВыражение)Возвращаемое значение: массив строк, удовлетворяющих шаблону
Метод string.match() использует объект RegExp (регулярное выражение), появившийся в JavaScript в NN4 и IE4. Исследуемое строковое значение указывается слева от точки, а регулярное выражение - в аргументе метода. Параметр должен быть объектом, созданным одним из двух возможных способов. Если найдено хотя бы одно совпадение, метод возвращает массив строк. В ином случае он возвращает значение null. Каждый элемент массива является копией подстроки, удовлетворяющей регулярному выражению. Этим методом можно воспользоваться для подсчета количества экземпляров определенной подстроки или последовательности символов в данной строке. Поиск позиций подстрок в строке требует применения других методов синтаксического анализа. См. также: объект RegExp (Этот справочный материал доступен для скачивания в формате PDF). string.replace(регВыражение, строкаЗамены)Возвращаемое значение: измененная строка.
Регулярные выражения широко используются в операциях поиска и замены. Метод string.replace() в JavaScript обеспечивает простой способ выполнения таких операций. Процесс поиска и замены требует наличия трех компонент. Первой является исходная строка, второй - регулярное выражение, с которым проводится сравнение, а третьей - подстрока, заменяющая исходный блок текста. В методе string.replace() исходная строка указывается слева от точки. Она может быть и обычной строкой в кавычках. Регулярное выражение задается в первом аргументе метода, а строка-заменитель - во втором. Определение регулярных выражений указывает, как нужно проводить замену: только в одном совпадении или во всех. Если в конце регулярного выражения добавить параметр g, метод replace() проводит глобальные поиск и замену. Если вы знаете, как работать с регулярными выражениями, вам будет достаточно просто пользоваться методом string.replace(). Использование регулярных выражений делает операции поиска и замены более мощными. Рассмотрим монолог Гамлета: То be, or not to foe: that is the question: Whether 'tis nobler in the mind to suffer Если нужно заменить оба экземпляра "be" на "exist", то это можно сделать с помощью оператора var regexp = /be/g soliloquy.replace(regexp, "exist") Однако этот подход не позволяет убедиться, является ли комбинация букв "Ь" и "е" отдельным словом. А что, например, если исходная строка содержит слова "being" или "saber"? Приведенный выше пример заменяет буквы "be" и в этих словах. Регулярные выражения поддерживают специальные символы, которые облегчают решение этой проблемы. В приведенном выше примере проводится поиск слова "be". К искомому выражению необходимо добавить символы, ограничивающие слово (специальные символы \b), например: var regexp = /\bbe\b/g soliloquy.replace(regexp, "exist") В этом синтаксисе учитывается тот факт, что после первых двух символов "be " введены знаки пунктуации, а не только пробелы. Более подробно о синтаксисе регулярных выражений рассказано в справочном материале по регулярным выражениям (формат PDF). См. также: метод string.match(). string.search(регВнражение)Возвращаемое значение: целочисленное смещение.
Результаты метода string.search() напоминают результаты метода string.indexOf(). В обоих случаях возвращается индекс первого экземпляра подстроки в исходной строке или -1, если такового не обнаружено. Разница, конечно же, заключается в том, что метод string.search() позволяет использовать в строке поиска регулярные выражения. См. также: метод string.match(). string.slice(начИндекс [, конИндекс])Возвращаемое значение: строка.
Метод string.slice() похож на string.substring(): они оба позволяют извлечь из строки подстроку (не изменяя исходную). Преимущество string.slice() заключается в том, что в этом методе можно указать индекс, отсчитываемый не от начала, а от конца строки. Для извлечения подстроки, которая заканчивается за 2 символа до конца строки, методом string.substring() требуется провести дополнительные вычисления: string.substring(4, (string.length-2)) Метод string.slice() позволяет указать отрицательное значение во втором аргументе, т.е. отсчитывать индекс от конца строки: string.slice(4, -2) Второй аргумент не является обязательным. Если он опущен, метод возвращает подстроку, началом которой служит заданная позиция, а концом - конец строки. См. также методы string.substr(), string.substring(). string.split ("разделитель" [, ограничитель])Возвращаемое значение: массив элементов.
Метод split() по своей функциональности противоположен методу array.join(), который объединяет элементы массива в одну строку, используя указанный разделитель (например, через точку-с-запятой). С точки зрения строкового объекта JavaScript разбивает строку на элементы, разделенные определенным символом, и создает из них массив. Инициализировать массив конструктором В NN3 и IE4 метод использует только первый аргумент. В браузерах NN4+ и IE4+ в качестве первого параметра можно использовать объект регулярных выражений, что повышает возможности поиска символов-разделителей. Рассмотрим, например, следующую строку: var nameList="1.Fred,2.Jane,3.Steve" Для преобразования этой строки в массив из трех элементов, содержащий лишь имена, без использования регулярных выражений потребуется провести определенный синтаксический анализ еще до начала метода string.split(). Применение регулярных выражений значительно упрощает задачу var regexp = /,*\d.\b/ var newArray = nameList.split(regexp) // результат = массив "Fred", "Jane", "Steve" Новый массив содержит только имена (без цифр или точек). Второй аргумент метода является дополнительным. Он позволяет указать максимальное количество элементов, сохраняемых в массиве. И в заключение, NN4+ поддерживает дополнительные возможности (не включенные в стандарт ЕСМА), если метод string.split() применяется внутри дескриптора <SCRIPT> с версией языка JavaScript 1.2 (и только). Символ пробела, заданный как единственный параметр string.split(" "), интерпретируется как любой символ-разделитель (пробел, символ табуляции, возврат каретки, перевод строки и т.д.). Даже если количество таких символов, идущих подряд, различно, они интерпретируются как один. Возможно, это специальное свойство не будет включено в стандарт ЕСМА и будет устранено из последующих версий JavaScript в браузерах NN. string.substr(начало [, длина])
Метод string.substr() представляет собой вариант метода string.substring(), который был частью языка JavaScript с момента его создания. Различие методов заключается в том, что аргументы метода string.substr() указывают начальный индекс и количество символов в подстроке, тогда как в string.substring() необходимо указывать начальный и конечный индексы. Как и для других методов, в string.substr() первый аргумент, индекс, отсчитывается с нуля. Если второй аргумент не указан, то в подстроку включаются все символы от начальной позиции до конца строки. То же самое происходит и тогда, когда значение второго аргумента превосходит индекс последнего символа в строке. Этот метод не является частью стандарта ЕСМА (третье издание спецификаций языка). Но, поскольку он широко используется, стандарт допускает его применение. См. также: метод string.substring(). string.substring(индексА, индексВ)Возвращаемое значение: подстрока, заданная начальным (индекстА) и конечным (индексВ) индексами.
Метод string.substring() позволяет выделить подстроку (т.е. группу символов) из строки. Аргументами этого метода являются начальный и конечный индексы (первый символ строки имеет индекс 0) подстроки в исходной строке. Важно отметить, что символ, заданный конечным индексом, не включается в подстроку. В каком порядке заданы индексы - неважно: метод начинает с меньшего и заканчивает на большем (исключая последний символ). Если значения индексов совпадают, метод возвращает пустую строку, а если второй аргумент опущен, подстрока простирается до конца строки. См. также методы string.substr(), string.slice(). string.toLocaleLowerCase()
|
Netscape Navigator 6+ | Internet Explorer 5.5+ |
+ | + |
Два этих метода представляют собой варианты стандартных методов изменения регистра строки. Они учитывают определенные языковые системы, чьи символы включают не только латинский алфавит.
См. также методы string.toLowerCase(), string.toUpperCase().
Возвращаемое значение: строка в верхнем или нижнем регистре, в зависимости от метода.
Многое из того, что происходит и запускается в Internet (и в JavaScript) учитывает регистр. URL на некоторых серверах, например, при обработке требует учета регистра в именах файлов и папок. Два этих метода представляют собой простейшие строковые методы, цель которых заключается в преобразовании строки в верхний или нижний регистр. Строки со смешанным регистром преобразуются к единому типу. Если, например, текст, введенный пользователем в поле, необходимо сравнить с некоторой строкой без учета регистра, удобно преобразовать обе строки к одному регистру, а затем проводить сравнение.
См.также: методы string.toLocaleLowerCase(), string.toLocaleUpperCase().
Возвращаемое значение: строковое значение.
Netscape Navigator 6+ | Internet Explorer 5.5+ |
+ | + |
Оба метода возвращают строковые значения (в отличие от полноценных строковых объектов). Если строковый объект создан конструктором
Определение того, какими строковыми методами необходимо воспользоваться для достижения той или иной цели, представляет собой непростую задачу, особенно, если требуется обеспечить совместимость с ранними версиями браузеров. Кроме того, трудно предугадать, какие способы обработки строк могут понадобиться в сценариях.
Следующий листинг содержит библиотеку строковых функций, предназначенных для вставки, удаления и замены блоков текста в строке. Если браузеры, на которые ориентирована страница, поддерживают подключение внешних файлов JavaScript (.js), функции будут всегда доступны сценариям.
Листинг. Функции обработки строк// Извлечение части строки перед подстрокой searchString function getFront(mainStr, searchStr) { foundOffset = mainStr.indexOf(searchStr); if (foundOffset == -1) { return null; } return mainStr.substring(0,foundOffset); } // Извлечение части строки после подстроки searchstring function getEnd(mainStr,searchStr) { foundOffset = mainStr.indexOf(searchStr); if (foundOffset == -1) { return null; } return mainStr.substring(foundOffset+searchStr.length, mainStr.length); } // Вставка подстроки insertstring перед подстрокой searchstring function insertstring(mainStr,searchStr,insertStr) { var front = getFront (mainStr, searchStr); var end = getEnd(mainStr,searchStr); if (front != null && end ! = null) { return front + insertStr + searchStr + end; } return null; } // Удаление подстроки deleteString function deleteString(mainStr,deleteStr) { return replaceString(mainStr,deleteStr, ""); } // Замена searchstring на replaceString function replaceString(mainStr,searchStr,replaceStr) { var front = getFront(mainStr,searchStr); var end = getEnd(mainStr,searchStr); if (front != null && end != null) { return front + replaceStr + end; } return null; }
Две первых функции извлекают подстроку в начале или конце строки и являются промежуточными функциями набора, ядро которого составляют три последних функции. Обратите внимание, что одни функции зависят от других, поэтому только включение всей группы из пяти функций позволяет им работать так, как запланировано.
Теперь мы подошли к рассмотрению следующей группы методов строкового объекта, которые облегчают процесс создания различных характеристик строк, необходимых для создания HTML-кода средствами JavaScript. Вот список этих методов:
string.anchor("anchorName") string.link(locationOrURL) string.big() string.bold() string.small () string.fixed() string.strike() string.fontcolor(colorValue) string.sub() string.fontsize(integer_1to7) string.sup() string.italics()
Вначале рассмотрим методы, не требующие никаких аргументов. Это, в первую очередь, методы, устанавливающие атрибуты шрифтов строки. В HTML-документе их изменение достигается парой дескрипторов, например <В>. . . </В> для полужирного шрифта. Эти методы добавляют к строковому объекту необходимые дескрипторы и возвращают текст, готовый к добавлению в HTML-код. Поэтому, например, выражение
"Good morning!".bold() превращается в Good morning!
Конечно же, HTML-код можно создавать и без этих методов, вставляя в него все необходимые дескрипторы. Одним из достоинств строковых методов является то, что они никогда не забывают поставить закрывающий дескриптор пары.
Листинг демонстрирует пример использования простых строковых методов, которые создают значение переменной, отображаемое затем на странице.
Листинг. Использование простых строковых методов<HTML> <HEAD> <TITLE>HTML by JavaScript</TITLE> </HEAD> <BODY> <SCRIPT LANGUAGE="JavaScript"> var page = ""; page += "JavaScript can create "; page+="HTML on the fly.<P>Numerous string "; page+="object methods facilitate creating text that is "; page+="boldfaced".bold(); page+=", "; page+="italicized".italics(); page+=", or even others."; document.write(page); </SCRIPT> </BODY> </HTML>
Два следующих метода (string.fontsize() и string.fontcolor()) также влияют на характеристики шрифта текста, отображаемого на HTML-странице. Аргументы достаточно очевидны: целое число в диапазоне от 1 до 7, задающее относительный размер шрифта, и цвет (в виде шестнадцатеричного триплета или константы имени цвета) текста. В следующем листинге к строке из предыдущего листинга добавляется определенная строка текста. Эта строка не только изменяет размер шрифта определенных частей текста, но и применяет вложенные атрибуты для задания цвета. Поскольку все эти методы не изменяют содержимого строки, их можно смело использовать как вложенные.
Листинг. Вложенные строковые методы.
<HTML> <HEAD> <TITLE>HTML by JavaScript</TITLE> </HEAD> <BODY> <SCRIPT LANGUAGE="JavaScript"> var page = ""; page += "JavaScript can create HTML on the fly. page+="<P>Numerous string object methods facilitate creating text that is " ; page+="boldfaced".bold() ; page+=", " ; page+="italicised".italics () ; page+=", or other.<P>"; page += "We can make "; page+="some words big".fontsize (5); page+=" and some words both "; page+=("big and "+"colorful".fontcolor('coral')).fontsize(5); page+=" at the same time."; document.write(page); </SCRIPT> </BODY> </HTML>
Два заключительных строковых метода позволяют добавить для строки анкер и ссылку. Аргумент метода string.anchor() используется в качестве имени анкера. Поэтому следующее выражение "Table of Contents".anchor("toc") преобразуется в
<A NAME="toc">Table of Contents</A>
Подобным образом метод string.link() принимает в качестве параметра URL: "Back to Home".link("index.html") Это выражение преобразуется в следующее:
<A HREF="index.html">Back to Home</A>
Этими методами пользоваться необязательно - ведь можно также устанавливать дескрипторы HTML вручную. Методы проще применять, если аргументы являются переменными, чьи значения зависят от введенных пользователем данных.
При взаимодействии браузеров и серверов некоторые небуквенно-цифровые символы (например пробел) нельзя пересылать в их естественной форме. Протоколы передачи данных позволяют отправлять более узкий набор символов. Для представления всех остальных символов используется специальный символ (%), за которым следует шестнадцатеричный код ASCII. Например, шестнадцатеричный код пробела равен 20 (десятичный - 32). Соответственно, он преобразуется к виду %20. Такие символы часто встречаются в списке URL, посещенных браузером документов. JavaScript поддерживает две функции, escape() и unescape(), которые позволяют преобразовывать в код отдельные строки. Для преобразования строки в закодированный формат используется оператор
escape("Howdy Pardner") // результат = "Howdy%20Pardner"
Функция unescape() выполняет обратное преобразование.
Источник - http://v.e-du.ru/?http://neo-site.narod.ru
Русский сайт системы KooBoo CMS PROИТ - Office 365, AD, Active Directory, Sharepoint, C#, Powershell Хостинг предоставлен VEDU.RU - Поволжским Образовательным Порталом |