Объекты String, как правило, создаются неявно с помощью строковых литералов.
// кавычки любые - без разницы
var str = "string literal"
В строковых литералах можно использовать escape-последовательности для представления особых знаков, которые нельзя напрямую использовать в строках, например символа перевода строки или знаков Юникода. При компиляции сценария каждая escape-последовательность в строковом литерале преобразуется в знаки, которые она представляет.
Можно указать юникодный символ явным образом, через его код.
var str = "\u1234"
Объекты String, заданные через кавычки (и называемые "примитивными" строками), немного отличаются от объектов String, созданных с помощью оператора new. Так, например, типом (typeof) данных объекта, созданного при помощи new, является 'object', а не 'string'. И такому объекту можно напрямую назначать дополнительные свойства и методы. В остальном - интерпретатор автоматически превращает примитивные строки в объекты.
"12345".length // 5
Доступ к символам
Доступ к символам осуществляется при помощи метода String#charAt
return 'cat'.charAt(1); // возвратит "a"
Также существует отсутствующий в стандарте ECMA-262 способ - обращение к строке как к массиву:
var str = 'cat'
return str[1] // "a"
В отличие от языков C/PHP/и т.п., однажды созданную строку нельзя изменить: символы можно только считывать, но не менять.
Для изменения строковой переменной применяется присваивание измененной строки:
str = "строка"
str = str.charAt(4) + str.charAt(5) + str.charAt(6) // "ока"
Сравнение строк
Для сравнения строк используются обычные операторы < >.
Автор: x-yuri, дата: 24 сентября, 2009 - 12:44
#permalink> Также существует отсутствующий в стандарте ECMA-262 способ - обращение к строке как к массиву
но он не везде работает
Автор: Cooskon, дата: 27 февраля, 2010 - 19:09
#permalinkИлья, добавьте, пожалуйста, в статью, что нельзя изменить конкретный символ в строке, и что для этого, соответственно, нет встроенных функций. Долго искал об этом информацию, пока на форуме не подсказали. Пусть и другие не спотыкаются об это
Автор: Гость (не зарегистрирован), дата: 12 июля, 2010 - 13:05
#permalinkБудьте добры, проясните работу со строками в HTML коде, закодированными, как обычно, в UTF-8. Потому что, к примеру, сравнение document.title=="Искомая страница" НЕ сработает до тех пор, пока сам скрипт с этим сравнением не сохранен в формате UTF-8. Я нигде данных об этом не встречал, нашел решение по интуиции чисто.
Автор: Гость (не зарегистрирован), дата: 11 апреля, 2011 - 12:01
#permalinkпоследний пример не правильный:
"str.charAt(6)" там в строке нет.
Автор: faiwer, дата: 11 мая, 2011 - 05:25
#permalink'Е' > 'А' == true
'Ё' > 'А' == false
Автор: Гость (не зарегистрирован), дата: 26 июня, 2011 - 22:37
#permalinkСчёт символов строки начинается с нуля, а не с единицы.
Автор: collapsus (не зарегистрирован), дата: 30 августа, 2011 - 15:16
#permalinkв ИЕ 'cat'[0] вернёт undefined
Автор: Тёмик (не зарегистрирован), дата: 10 сентября, 2011 - 22:19
#permalinkА есть какой-нибудь покороче способ для вставки символа несколько раз подряд?
for (n = 1; n <= 5; n++) Str += 'x';Автор: BiggestSmile (не зарегистрирован), дата: 1 декабря, 2011 - 01:38
#permalinkДоброго времени суток, столкнулся с такой проблемой: Пытаюсь сравнить два элемента массива, на строке с .test выдает ошибку "Объект не поддерживает свойство или метод ".test"". Код js в теле .hta.
Пример (ругается на строку "if (re.test(str))"):
function testinput(re, str)
{
if (re.test(str))
midstring = " содержит ";
else
midstring = " не содержит ";
document.write (str + midstring + re.source);
}
var m1 = ["1", "2", "3"];
var m2 = ["1", "2", "3"];
testinput(m1[1], m2[1]);
из-за чего ошибка и как лечить. Заранее спасибо.
Автор: StanWanderer, дата: 23 января, 2012 - 14:38
#permalinkВсем привет!
Вопрос к знающим: имеются ли отличия в использовании строковых литералов, обрамленных " (кавычками) или ' (апострофами)?
Есть ли принципиальная разница между:
и
?
Автор: Гость (не зарегистрирован), дата: 5 апреля, 2012 - 15:38
#permalinkКак сделать это корректно помогите пожалуйста?
Создайте форму 2-х полей, запрашивающую у пользователя имя и фамилию. Запишите и то, и другое в одну переменную, выведите ее на экран.
С помощью методов объекта String для работы с RegExp переставьте, местами фамилию и имя и разделив их запятой.
Выведите на экран результат.
Например, если пользователь ввел Вася Васечкин, то в итоге на экране должно получиться «Васечкин, Вася».
Автор: Dimm (не зарегистрирован), дата: 15 января, 2013 - 16:42
#permalinkКак вывести все свойства и методы - объекта Стринг? через for in не получилось.
Автор: xvova (не зарегистрирован), дата: 20 апреля, 2014 - 14:12
#permalinkс чем быстрее работает скрипт?
с массивом [a,b,c,d,e,f,g,h]
или со строкой "abcdefgh" через str[i] или метод .charAt(i)
Автор: elis (не зарегистрирован), дата: 9 октября, 2024 - 19:18
#permalinkПодскажите пожалуйста, правильно ли я понимаю:
String является примитивом, примитив не может иметь свои свойства и методы.
Для реализации такой обработки движки под капотом преобразуют примитивы в объекты, которые после обработки успешно удаляются.
Например:
Строка так и осталась строкой, мы применили лишь метод объекта-оболочки.
И если с методами - всё понятно, мы вызываем метод объекта и он что-то делает, то не совсем понятно в какой момент и как вычисляется свойство length?