Семя – орган полового размножения и расселения растений: наружи у семян имеется плотный покров – кожура...
Архитектура электронного правительства: Единая архитектура – это методологический подход при создании системы управления государства, который строится...
Топ:
Эволюция кровеносной системы позвоночных животных: Биологическая эволюция – необратимый процесс исторического развития живой природы...
Характеристика АТП и сварочно-жестяницкого участка: Транспорт в настоящее время является одной из важнейших отраслей народного хозяйства...
Установка замедленного коксования: Чем выше температура и ниже давление, тем место разрыва углеродной цепи всё больше смещается к её концу и значительно возрастает...
Интересное:
Инженерная защита территорий, зданий и сооружений от опасных геологических процессов: Изучение оползневых явлений, оценка устойчивости склонов и проектирование противооползневых сооружений — актуальнейшие задачи, стоящие перед отечественными...
Средства для ингаляционного наркоза: Наркоз наступает в результате вдыхания (ингаляции) средств, которое осуществляют или с помощью маски...
Что нужно делать при лейкемии: Прежде всего, необходимо выяснить, не страдаете ли вы каким-либо душевным недугом...
Дисциплины:
2017-06-29 | 251 |
5.00
из
|
Заказать работу |
|
|
В JavaScript любые текстовые данные являются строками. Не существует отдельного типа «символ», который есть в ряде других языков. Внутренним форматом строк, вне зависимости от кодировки страницы, является 16-разрядный Юникод (Unicode).
Создание строк
Строки создаются при помощи двойных или одинарных кавычек:
let text = "моя строка";
let anotherText = 'еще строка';
Специальные символы
Строки могут содержать специальные символы. Самый часто используемый из таких символов – это «перевод строки».
Есть и более редкие символы, вот их список:
Специальные символы | |
Символ | Описание |
\b | Backspace |
\f | Form feed |
\n | New line |
\r | Carriage return |
\t | Tab |
\uNNNN | Символ в кодировке Юникод с шестнадцатеричным кодом `NNNN`. Например, `\u00A9` - юникодное представление символа копирайт © |
Экранирование специальных символов
Экранирование служит исключительно для правильного восприятия строки JavaScript. В памяти строка будет содержать сам символ без '\'.
\0 — ноль-символ
\' — одинарная кавычка
\" — двойная кавычка
\\ — обратный слэш
\b — забой
\f — разрыв страницы
\n — новая строка
\r — возврат каретки
\t — табуляция
\v — вертикальная табуляция
\uFFFF (4 шестнадцатеричных цифры) — символ по Unicode-коду
\u{F} … \u{FFFFFF} — расширенный юникод
\xFF — символ по коду ASCII Latin-1
Многострочность
Строка однострочная. Для многострочной можно в конце поставить «`\`» (перевод строки игнорируется):
'Пример текста\
занимающего две строки'
=== 'Пример текста занимающего две строки' // true
Или использовать шаблоны (перевод строки учитывается):
`Пример текста
занимающего две строки`
=== 'Пример текста\nзанимающего две строки' // true
Операции
Объединение строк — оператор «+»:
|
'Hello' + ' world' // 'Hello world'
Сравнение происходит побуквенно по алфавиту (таблице символов):
'abc' === 'abc'
'abc' === 'a' + 'b' + 'c'
'a' < 'b' // true
'c' < 'b' // false
'abcd' < 'abcd' // false
'abcd' < 'abdc' // true
Методы и свойства
Свойство length
Одно из самых частых действий со строкой – это получение ее длины:
‘text’.length; // 4
Доступ к символам
charAt(index: number): string
— получить символ в заданной позиции (от нуля). Если запрошенная позиция выходит за пределы строки, вернётся пустая строка.
'text'.charAt(1); // 'e'
'text'.charAt(-1); // ''
'text'.charAt(10); // ''
'text'.charAt(0); // 't'
Также для доступа к символу можно использовать квадратные скобки:
‘text’ [0]; // "t"
Разница между этим способом и charAt заключается в том, что если символа нет – charAt выдает пустую строку, а скобки – undefined:
"".charAt(0); // пустая строка
"" [0]; // undefined
Изменения строк
Содержимое строки в JavaScript нельзя изменять. Нельзя взять символ посередине и заменить его. Как только строка создана – она такая навсегда.
Можно лишь создать целиком новую строку и присвоить в переменную вместо старой, например:
let str = "строка";
str = str[3] + str[4] + str[5];
alert(str); // ока
Смена регистра
Методы toLowerCase() и toUpperCase() меняют регистр строки на нижний/верхний:
"Интерфейс".toUpperCase(); // ИНТЕРФЕЙС
Пример ниже получает первый символ и приводит его к нижнему регистру:
"Интерфейс" [0].toLowerCase(); // 'и'
Поиск подстроки
indexOf(searchString: string, fromIndex?: number)
- возвращает позицию, на которой находится подстрока или -1, если ничего не найдено. Например:
'test text'.indexOf('t') // 0
'test text'.indexOf('t', 1) // 3
'test text'.indexOf('te', 1) // 5
'test text'.indexOf('z') // -1
lastIndexOf(searchString: string, toIndex?: number)
— находит последнее вхождение подстроки `searchString` в строке до позиции `toIndex` (0..длина), если указана, иначе — до конца строки. Возвращается позиция первого символа (от нуля), или «-1», если вхождения нет.
'test text'.lastIndexOf('t') // 8
'test text'.lastIndexOf('t', 7) // 5
'test text'.lastIndexOf('te') // 5
'test text'.lastIndexOf('z') // -1
includes(searchString: string, position?: number): Boolean
|
— проверяет вхождение подстроки `searchString` в строке, начиная от позиции `position` (0..длина), если указана, иначе — с начала строки. Возвращает `true`, если подстрока найдена, иначе — `false`.
'test text'.includes('t') // true
'test text'.includes('st') // true
'test text'.includes('st', 3) // false
'test text'.includes('z') // false
endsWith(searchString: string, endPosition?: number): Boolean
— проверяет, что строка завершается подстрокой `searchString`. Если указано `endPosition`, то строка считается данной длины, иначе поиск идёт до конца строки.
'test text'.endsWith('t') // true
'test text'.endsWith('x') // false
'test text'.endsWith('st', 4) // true
'test text'.endsWith('st', 5) // false
Взятие подстроки: substr, substring, slice
В JavaScript существуют целых 3 метода для взятия подстроки, с небольшими отличиями между ними.
substring(start [, end])
- возвращает подстроку с позиции start до, но не включая end. Если аргумент end отсутствует, то идет до конца строки.
‘stringify’.substring(0,1)); // "s"
‘stringify’.substring(2)); // "ringify"
substr(start [, length])
- первый аргумент имеет такой же смысл, как и в substring, а второй содержит не конечную позицию, а количество символов. Если второго аргумента нет – подразумевается «до конца строки».
‘stringify’.substr(2,4); // ring
slice(start [, end])
- возвращает часть строки от позиции start до, но не включая, позиции end.
Отрицательные аргументы
Различие между substring и slice – в том, как они работают с отрицательными и выходящими за границу строки аргументами:
substring(start, end)
Отрицательные аргументы интерпретируются как равные нулю. Слишком большие значения усекаются до длины строки:
"testme".substring(-2); // "testme", -2 становится 0
Кроме того, если start > end, то аргументы меняются местами, т.е. возвращается участок строки между start и end:
"testme".substring(4, -1); // "test"
// -1 становится 0 -> получили substring(4, 0)
// 4 > 0, так что аргументы меняются местами -> substring(0, 4) = "test"
slice(start [, end])
Отрицательные значения отсчитываются от конца строки:
"testme".slice(-2); // "me", от 2 позиции с конца
"testme".slice(1, -1); // "estm", от 1 позиции до первой с конца.
Кодировка Юникод
charCodeAt(index: number): number
— возвращает числовой Unicode-код символа (0…65535). При выходе за диапазон возвращает NaN.
'text'.charCodeAt(1) // 101
'text'.charCodeAt(10) // NaN
codePointAt(position: number): number | undefined
— возвращает числовой Unicode-код символа с подержкой суррогатных пар (два 16-битных значения, где каждое значение лежит в диапазоне от 0xD800 и до 0xDFFF; другими словами, два «типа символа» образуют один «настоящий» символ). Если в указанной позиции нет символа, возвращается `undefined`.
|
'text'.codePointAt(1) // 101
'text'.codePointAt(10) // undefined
'\uD800\uDC00'.codePointAt(0) // 65536
Другие методы
concat(...strings: string[]): string
— объединение двух или более строк. Объединение через оператор «+» является предпочтительнее.
't'.concat('e', 'x', 't') // 'text'
localeCompare(compareString: string): number
— сравнивает две строки. Если compareString больше — результат отрицательный, меньше — положительный, равны — нулевой.
'a'.localeCompare('b') // -1
'a'.localeCompare('c') // -1
'ё'.localeCompare('я') // -1
trim(): string
— удаляет интервальные символы по сторонам строки (пробелы, табуляцию, переводы строк).
' test \t\n '.trim() === 'test'
search(regexp: string | RegExp): number
— находит первое совпадение регулярного выражения со строкой. Глобальный поиск не осуществляет (флаг «g» не учитывается).
'test text'.search(/.t/) // 2
'test text'.search('.t') // 2
'test text'.search(/^.t/) // -1
match(regexp: string | RegExp): RegExpMatchArray | null
— возвращает перечень совпадений регулярного выражения по строке.
'test text'.match(/.t/g) // [ 'st', ' t', 'xt' ]
replace(searchValue: string | RegExp, replaceValue: string | Function)
— производит поиск с заменой по строке. В результате возвращает новую строку. Шаблон для совпадения может быть регулярным выражением или строкой. Результат, на который заменять, может быть строкой или функцией. В последнем случае замена производятся на результат работы функции.
Строка замены понимает следующие мета-последовательности:
* `$$` — символ «$»
* `$&` — совпавшая подстрока
* `$`` — часть строки до совпадения
* `$'` — часть строки после совпадения
* `$1`, `$2`, … — результат совпадения соответствующего подшаблона регулярного выражения
Функция замены принимает следующие аргументы:
* math — совпавшая подстрока
* p1, p2, … — результат совпадения соответствующего подшаблона регулярного выражения
* offset — позиция подстроки в строке
* string — исходная строка
'test text'.replace('te', 'be') // 'best text'
'test text'.replace(/te/, 'be') // 'best text'
'test text'.replace(/te/g, 'be') // 'best bext'
'test text'.replace(' ', '[$`]<$&>($\')') // 'test[test]< >(text)text'
split([separator][, limit])
— разделяет строку на массив подстрок.
|
separator — разделитель строки, может быть строкой или регулярным выражением.
limit — устанавливает ограницение на количество разделяемых частей.
'test text'.split() // [ 'test text' ]
'test text'.split('') // ['t', 'e', 's', 't', ' ', 't', 'e', 'x', 't']
'test text'.split(' ') // [ 'test', 'text' ]
'test text'.split('t') // [ '', 'es', ' ', 'ex', '' ]
'test text'.split('t', 3) // [ '', 'es', ' ' ]
String.fromCharCode(num1,..., numN)
— строка из кодов символов.
String.fromCharCode(65, 66, 67) // ABC
Строковые шаблоны
Добавлен новый вид кавычек для строк:
let str = `обратные кавычки`;
Основные отличия:
ü Поддерживают многострочность
`моя
многострочная
строка`;
ü Можно вставлять выражения при помощи ${…}
`2 + 3 = ${2 + 3}`; // 2 + 3 = 5
При помощи ${…} можно вставлять как значение переменной, так и более сложные выражения, которые могут включать в себя операторы, вызовы функций и т.п. Такую вставку называют «интерполяцией».
ü Поддерживают тег-функцию
Название этой функции ставится перед первой обратной кавычкой:
let str = func`моя строка`;
Эта функция будет автоматически вызвана и получит в качестве аргументов строку, разбитую по вхождениям параметров ${…} и сами эти параметры.
function myTag(strings,...values)
{
console.log(strings);
console.log(strings.raw);
console.log(values);
return `[${strings.join('][')}]`;
}
myTag`Test \u263A ${1} template ${2} literal ${3} string`
В strings.raw содержатся участки строки в «изначально введённом» виде. То есть, если в строке находится \n или \u1234 или другое особое сочетание символов, то оно таким и останется.
|
|
История развития хранилищ для нефти: Первые склады нефти появились в XVII веке. Они представляли собой землянные ямы-амбара глубиной 4…5 м...
Двойное оплодотворение у цветковых растений: Оплодотворение - это процесс слияния мужской и женской половых клеток с образованием зиготы...
Кормораздатчик мобильный электрифицированный: схема и процесс работы устройства...
Общие условия выбора системы дренажа: Система дренажа выбирается в зависимости от характера защищаемого...
© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!