определение
Строка составляет ноль или более символов, расположенных вместе, размещены в одиночных или двойных кавычках.
'ABC' "ABC"Двойные кавычки могут использоваться внутри одной строки цитаты. Внутри строки двойной цитаты можно использовать отдельные кавычки.
'key = "value"' "Это долгий путь"
Оба выше, являются законными строками.
Если вы хотите использовать отдельные кавычки внутри одной строки цитаты (или двойных кавычек внутри строки с двойной цитатой), вы должны префиксу одну цитату (или двойные кавычки) внутри, чтобы сбежать.
«Она сказала/« Привет/»?» // «Она сказала« Привет »?» «Она сказала/" Привет/"?" // "Она сказала" Привет "?"
Поскольку значения атрибутов языка HTML используют двойные цитаты, многие проекты согласны с тем, что языковые строки JavaScript используют только отдельные цитаты, и этот урок следует за этим соглашением. Конечно, это также идеально подходит для использования только двойных цитат. Важно придерживаться одного стиля, а не смешивать два стиля.
По умолчанию строки могут быть записаны только в одной строке, и если они разделены на несколько строк, они сообщат об ошибке.
'ABC' // Синтаксисеррок: неожиданный токен незаконно
Приведенный выше код делит строку на три строки, а JavaScript сообщит об ошибке.
Если длинная строка должна быть разделена на несколько строк, можно использовать обратную склад в конце каждой строки.
var longstring = "long /long /long /string"; longstring // "длинная длинная строка"
Приведенный выше код показывает, что после добавления Backslash строка, первоначально записанной на одной строке, можно разделить на несколько строк письма. Однако при выводе эффект все еще остается одной линией, и эффект точно такой же, как написание на той же строке. Обратите внимание, что за BackSlash должен следить новый символ, и не должно быть никаких других символов (таких как пространства), в противном случае сообщается об ошибке.
Оператор конкатенации (+) может объединять несколько однострочных строк, разделять длинную строку на несколько строк для записи, а также единственная линия при выходе.
var longstring = 'long' + 'long' + 'long' + 'string';
Если вы хотите вывести многострочные строки, существует обходной путь для использования многострочных комментариев.
(function () {/*Line 1line 2line 3*/}). ToString (). Split ('/n'). Slice (1, -1) .join ('/n') // "Линия 1 // Строка 2 // Строка 3"В приведенном выше примере выходной строки представляет собой несколько строк.
Побег
Backslash (/) имеет особое значение в строке и используется для представления некоторых специальных символов, поэтому он также называется экологичным символом.
Специальные персонажи, которых нужно сбежать с обратными хлеками в основном следующим образом:
Приведенным выше символам предшествуют обратные склады, которые представляют собой особые значения.
Console.log ('1/n2') // 1 // 2В приведенном выше коде /n означает новую строку, и при выходе делится на две строки.
Есть три специальных применения для бэк -хлебов.
(1)/HHHH
За обратной задачей следует три восьмировь (от 000 до 377), представляющих символ. HHH соответствует точке кода Unicode соответствующего символа, например, /251 представляет символ авторского права. Очевидно, этот метод может вывести только 256 символов.
(2)/xhh
/x следуют два шестнадцатеричных числа (от 00 до FF), представляющих символ. HH соответствует точке кода Unicode символа, такой как /xa9, представляет символ авторского права. Этот метод может вывести только 256 символов.
(3)/uxxxxx
/u сопровождаются четырьмя шестнадцатеричными числами (0000 до FFFFF), представляющие символ. HHHHH соответствует точке кода Unicode символа, такой как /U00A9, представляет символ авторского права.
Ниже приведены примеры этих трех специальных символов, написанных подробно.
'/251' // "©" '/xa9' // "©" '/u00a9' // "©"/172 '===' z '// true'/x7a '===' z '// true'/u007a '===' z '// true
Если Backslash используется перед неспециальным символом, обратная черта опущена.
'/a' // "a"
В приведенном выше коде A является нормальным символом, и нет особого значения, чтобы добавить обратную черту перед ним, и обратная сбоя будет автоматически опущен.
Если BackSlash должен быть включен в обычное содержание строки, то необходимо добавить еще одну обратную черту перед BackSlash, чтобы сбежать.
"Prev // next" // "prev/ next"
Струны и массивы
Строку можно рассматривать как массив символов, поэтому квадратный оператор кронштейна массива может использоваться для возврата символов в определенной позиции (номер позиции начинается с 0).
var s = 'hello'; s [0] // "h" s [1] // "e" s [4] // "o" // Использовать оператор квадратного кронштейна 'hello' [1] // "e"
Если число в квадратных скобках превышает длину строки, или если число в квадратных скобках вообще не является, возвращается неопределенным.
'abc' [3] // undefined'abc '[-1] // undefined'abc' ['x'] // не определено
Однако это все о сходстве между струнами и массивами. На самом деле, невозможно изменить один символ в строке.
var s = 'hello'; удалить s [0]; s // "hello" s [1] = 'a'; s // "hello" s [5] = '!'; s // "Привет"
Приведенный выше код указывает на то, что отдельные символы внутри строки не могут быть изменены или добавлены или удалены, и эти операции не будут сбои в сборе.
Причина, по которой строки аналогичны массивам символов, на самом деле заключается в том, что при выполнении работы квадратного кронштейна на строках строка будет автоматически преобразована в строковый объект.
Атрибут длины
Атрибут длины возвращает длину строки, которая не может быть изменена.
var s = 'hello'; s.length // 5s.length = 3; s.length // 5s.length = 7; s.length // 5
Приведенный выше код указывает, что атрибут длины строки не может быть изменен, но ошибок не будет.
Набор символов
JavaScript использует наборы символов Unicode, что означает, что в JavaScript все символы представлены Unicode.
JavaScript не только использует Unicode для хранения символов внутри, но и Unicode также может использоваться непосредственно в программе. Все символы могут быть записаны в форме «/uxxxx», где XXXX представляет кодирование Unicode символа. Например, /U00A9 представляет символ авторского права.
var s = '/u00a9'; s // "©"
Каждый символ хранится в 16-битном (то есть 2 байт) формат UTF-16 внутри JavaScript. То есть, длина символа блока JavaScript зафиксирована на 16-битную длину, то есть 2 байта.
Тем не менее, UTF-16 имеет две длины: для символов между U+0000 и U+FFFF длина составляет 16 бит (то есть 2 байта); Для символов между U+10000 и U+10FFFF длина составляет 32 бита (то есть 4 байта), а первые два байта составляют от 0xd800 и 0xdbff, а два последних байта составляют от 0xdc00 и 0xdfff. Например, соответствующий символ U+1D306-?, и он написан как UTF-16, который составляет 0xd834 0xdf06. Браузер правильно распознает эти четыре байта как одного персонажа, но длина символа внутри JavaScript всегда зафиксирована на 16 бит, и эти четыре байта будут рассматриваться как два символа.
var s = '/ud834/udf06'; s // "?" s.length // 2 /^.$/.
Приведенный выше код показывает, что для символов между U+10000 и U+10FFFF JavaScript всегда рассматривается как два символа (атрибут длины символа составляет 2). Регулярное выражение, используемое для совпадения одного символа, потерпит неудачу (JavaScript считает, что здесь более одного символа), метод Charat не может вернуть ни одного символа, а метод CharcoDeat возвращает десятичное значение, соответствующее каждому байту.
Следовательно, при рассмотрении этого необходимо учитывать. Для 4 байтов символов юникода, предполагая, что C является номером Unicode символа, H - первые два байта, а L - последние два байта, отношение конверсии между ними следующим образом.
// конвертировать символы, больше, чем U + FFFFFF из UNICODE в UTF -16H = MATH.FLOOR ((C - 0x10000)/ 0x400) + 0xd800l = (C - 0x10000) % 0x400 + 0xdc00 /// Конвертирование символов больше, чем U + FFFFF от UTF -16 в UNICODEC = (h -0xd800) * 0x400). 0x10000
Следующее регулярное выражение может распознавать все символы UTF-16.
([/0-/ud7ff/ue000-/ufff] | [/ud800-/udbff] [/udc00-/udff]))
Поскольку двигатель JavaScript (строго говоря, спецификация ES5) не может автоматически распознавать символы Unicode в вспомогательной плоскости (число больше 0xffff), все функции обработки строк дадут неверные результаты при столкновении с такими символами. Если вы хотите завершить операции, связанные с строкой, вы должны определить, попадают ли символы в диапазоне от 0xd800 до 0xdfff.
Ниже приведена функция, которая может правильно обрабатывать обход строки.
функция getSymbols (string) {var length = string.length; var index = -1; var output = []; Персонаж VAR; var charcode; while (++ index <length) {символ = string.charat (index); charcode = parmate.charcodeat (0); if (charcode> = 0xd800 && charcode <= 0xdbff) {output.push (символ+string.charat (++ index)); } else {output.push (символ); }} return output;} var symbols = getSymbols ('?'); symbols.foreach (function (symbol) {// ...});Другие строковые операции, такие как замена (string.prototype.replace), подстроение перехвата (string.prototype.substring, string.prototype.slice), должны быть обработаны аналогично.
BASE64 Транскодирование
Base64 - это метод кодирования, который может преобразовать любого символа в печатные символы. Этот метод кодирования в основном используется не для шифрования, а для того, чтобы избежать специальных символов и упростить обработку программы.
JavaScript изначально предоставляет два метода, связанных с Base64.
var string = 'hello world!'; btoa (string) // "sgvsbg8gv29ybgqh" atob ('sgvsbg8gv29ybgqh') // "Hello World!" Эти два метода не подходят для символов, не являющихся символами, и сообщат об ошибке. btoa ('hello') // unaught domexception: строка для кодировки содержит символы за пределами диапазона латинского диапазона. Чтобы преобразовать не ASCII символы в кодирование Base64, в середине необходимо вставить транскодирующую связь, и затем используются эти два метода. Функция b64encode (str) {return btoa (encodeuricomponent (str));} функция b64decode (str) {return decodeuricomponent (atob (str));} b64encode ('hello') // "Juu0jujejuewjuu1jue1juje" b64decode ('juu0jujejuewjuu1jue1juje') // "Привет"