String & Symbol +
Кавычки
'string1'; // одинарные
'string2'; // двойные
`string3`; // обратные
Экранирование символов
'It\'s easy'; // экранирование символа кавычки
'This is a backslash: \\'; // экранирование обратного слэша
'It\'s easy \nto learn JS'; // перенос строки
'Column1\tColumn2\tColumn3'; // 'Column1 Column2 Column3' табуляция
'\u00A9 2023'; // '© 2023' никод
'ABCD\bE';
// обратные кавычки самые мощные
// ${js-код} и учитываются пробелы
`
${1 + 3} шт.
${Math.floor(Math.random() * 100)}
`;
Индексы
'someString'.length; // длина строки (пробелы считаются)
'someString'[0]; // 's'
'someString'.at(0); // 's' - дублирующий метод
'someString'.charAt(0); // 's' - дублирующий метод
'someString'['someString'.length - 1]; // 'g'
'someString'[100]; // ошибки не будет, вернет undefined
Преобразования типов
// Число в строку
`${123}`; // '123' - I способ
123 + ''; // '123' - II способ
String(123); // '123' - III способ
String(-12.3); // '-12.3'
(0.123).toString(); // '0.123' - IV способ
String(Infinity); // 'Infinity'
String(NaN); // 'NaN'
// null и undefined
String(null); // 'null'
String(undefined); // 'undefined'
// boolean
String(true); // 'true'
String(false); // 'false'
// object
String(function () {}); // 'function () {}' - текст кода функции
String({}); // '[object Object]'
String({ key: 42 }); // '[object Object]'
String([]); // '' - пусой массив как пустая строка
String([1, 2]); // '1,2'
+''; // 0
+' 4'; // 4
typeof '' || typeof ' ' || typeof 'abc'; // 'string'
// string
String(''); // ''
String('abc'); // 'abc'
// number
Number('') || Number(' '); // 0
Number('abc'); // NaN
Number('123'); // 123
+'123'; // 123
Number('123.123'); // 123.123
// boolean
Boolean(''); // faslse
Boolean(' '); // true
Boolean('abc'); // true
Конкатeнация
// concatination
'abc' + 'def'; // 'abcdef'
'asdfas' + 123; // 'asdfas123'
'asdfas' - 123 || 'asdfas' * 123; || 'asdfas' / 123; // NaN
true + 'abc'; // 'trueabc'
true - 'abc'; // NaN
'aasdfad'.concat('fgfgfgfgf'); // 'aasdfadfgfgfgfgf'
Методы для string
Регистр
// ЭТИ методы не меняют исходную строку, если нужно сохранить изменения,
// то нужно присваивать из в переменную
'string'.toUpperCase(); // 'STRING'
'ANOTHER STRING'.toLowerCase(); // 'another string'
// c локализацией
'string'.toLocaleUpperCase(); // 'STRING'
'ANOTHER STRING'.toLocaleLowerCase(); // 'another string'
Преобразование в массив и обратно
// после создания массива из строки можно применять методы массива
'string'.split(''); // [ 's', 't', 'r', 'i', 'n', 'g' ]
['s', 't', 'r', 'i', 'n', 'g'].join(); // ''s,t,r,i,n,g''
['s', 't', 'r', 'i', 'n', 'g'].join(''); // 'string'
// можно вставлять любые символы
['s', 't', 'r', 'i', 'n', 'g'].join(' '); // 's t r i n g'
['s', 't', 'r', 'i', 'n', 'g'].join('-'); // 's-t-r-i-n-g'
Поиск индексов по символу
'string'.indexOf('g'); // 5
'string'.indexOf('H'); // -1 - если не нашел совпадений
'string'.search('g'); // 5 - дублирующий метод, также используется в regExp
// такой же метод, то ищет с конца строки
'string'.lastIndexOf('g'); // 5
Вырезать / обрезать подстроку
'string'.slice(1, 3); // 'tr'
'String'.slice(-2); // 'ng' (вырезать 2 символа с конца)
'String'.substring(1, 3); // "tr"
'String'.substring(0, 1); // 'S' (выерзать 1 символ, начиная с 0 индекса)
Заменить символ
'Ztring'.replace('Z', 'S'); // "String"
'Ztring Ztring Ztring Ztring'.replaceAll('Z', 'S'); // "String String String String"
Повторение
'String'.repeat(2); // "StringString"
'String'.repeat(3); // "StringStringString"
Удаление пробелов
' String '.trim(); // "String"
' String '.trimStart(); // 'String '
' String '.trimEnd(); // ' String'
' String '.replace(/\s/g, ''); // "String" - ругулярное выражение
// вставка пробелов
'string'.padStart(10); // ' string'
'string'.padEnd(10); // 'string '
// вставка cимволов
'string'.padStart(10, 'a'); // 'aaaastring'
Поиск совпадений
// по началу строки
'String'.startsWith('St'); // true
// по концу строки
'String'.endsWith('ng'); // true
// по всей строке
'String'.includes('S'); // true
'String'.includes('Sr'); // false
'String'.includes('S', 0); // true (начиная с 1-го индекса)
'String'.includes('S', 1); // false (начиная с 1-го индекса)
Сравнение строк
// У каждого символа есть код, в JS сравниваются эти коды символов.
// Пустая строка всегда меньше
// У заглавных код меньше чем у строчных (так как строчные стоят правее по алфавиту)
// У кириллицы код больше чем у латиницы
// На практике редко используется.
// ABC .. abc .. АБВ .. абв
// Символ эмодзи (находится за пределами Basic Multilingual Plane)
let emoji = '🍎';
// charCodeAt() - раньше использовался чаще
emoji.charCodeAt(0); // 55356 (первая часть суррогатной пары)
emoji.charCodeAt(1); // 57166 (вторая часть суррогатной пары)
emoji.codePointAt(0); // 127822 (правильный код символа эмодзи)
'a'.codePointAt(0); // 97
'A'.codePointAt(0); // 65
const a = 'a'.codePointAt(0); // 97
const b = 'b'.codePointAt(0); // 98
'a' > 'A'; // true (97 > 65)
'a' > 'b'; // false (97 > 98)
// сравнение через localeCompare
'a'.localeCompare('b'); // - 1
'a' > 'b'; // false (эквивалентно)
'b'.localeCompare('a'); // 1
'b' > 'a'; // true (эквивалентно)
'a'.localeCompare('a'); // 0
'a' === 'a'; // true (эквивалентно)
Ещё методы
// regExp
- search() - ищет совпадение с регулярным выражением и возвращает индекс.
- matchAll() - возвращает итератор со всеми совпадениями регулярного выражения.
- match() - ищет совпадение с регулярным выражением.
- normalize() - возвращает нормализованную форму строки Unicode.
- fromCharCode() и fromCodePoint() (статические методы String) - создают строку из последовательности значений Unicode.
// устаревшее
- valueOf() - возвращает примитивное значение объекта String.
- anchor(), big(), blink(), bold(), fixed(), fontcolor(), fontsize(), italics(), link(), small(), strike(), sub(), sup()