String
У объекта String есть один статический метод, String.fromCharCode(), который обычно используют для создания строкового представления последовательности Unicode символов. В этом примере мы делаем простую строку с использованием ASCII кодов:
String.fromCodePoint(70, 108, 97, 118, 105, 111) // 'Flavio'
Вы также можете использовать восьмеричные и шестнадцатеричные числа:
String.fromCodePoint(0x46, 0154, parseInt(141, 8), 118, 105, 111) // 'Flavio'
Все другие, описанные ниже методы, это методы "из коробки", которые работают на строках.
charAt()
Отдаёт символ под заданным индексом i.
Примеры:
'Flavio'.charAt(0) // 'F' 'Flavio'.charAt(1) // 'l' 'Flavio'.charAt(2) // 'a'
Если вы зададите индекс, который не подходит по строке, то на выходе вы получите уже пустую строку.
В JavaScript нет типа char, так что char это строка с длиной 1.
charCodeAt()
Отдаёт код символа под индексом i. Как и с charAt(), отдаёт Unicode 16-битное целое число, представляющее символ:
'Flavio'.charCodeAt(0) // 70 'Flavio'.charCodeAt(1) // 108 'Flavio'.charCodeAt(2) // 97
Вызов toString() после него, отдаст шестнадцатеричное число, которое вы можете найти в любой Unicode таблице.
concat()
Объединяет актуальную строку со строкой str.
Пример:
'Flavio'.concat(' ').concat('Copes') // 'Flavio Copes'
Вы можете указывать сколько угодно аргументов и в таком случае, все эти аргументы будут объединены в строку.
'Flavio'.concat(' ', 'Copes') // 'Flavio Copes'
endsWith()
Проверяет заканчивается ли строка со значением другой строки str.
'JavaScript'.endsWith('Script') // true 'JavaScript'.endsWith('script') // false
Вы можете передать второй параметр с целым числом и endsWith() будет рассматривать оригинальную строку, как если бы она этой заданной длины:
'JavaScript'.endsWith('Script', 5) // false 'JavaScript'.endsWith('aS', 5) // true
includes()
Проверяет есть ли в строке значение строки str.
'JavaScript'.includes('Script') // true 'JavaScript'.includes('script') // false 'JavaScript'.includes('JavaScript') // true 'JavaScript'.includes('aSc') // true 'JavaScript'.includes('C++') // false
includes() также принимает второй опциональный параметр, целое число, которое указывает на позицию с которой начинать поиск.
'a nice string'.includes('nice') // true 'a nice string'.includes('nice', 3) // false 'a nice string'.includes('nice', 2) // true
indexOf()
Даёт позицию начала заданной строки str в строке, на которой применяется метод.
'JavaScript'.indexOf('Script') // 4 'JavaScript'.indexOf('JavaScript') // 0 'JavaScript'.indexOf('aSc') // 3 'JavaScript'.indexOf('C++') // -1
Вы можете передать второй параметр, чтобы указать точку старта:
'a nice string'.indexOf('nice') !== -1 // true 'a nice string'.indexOf('nice', 3) !== -1 // false 'a nice string'.indexOf('nice', 2) !== -1 // true
lastIndexOf()
Даёт позицию последнего появления строки str в актуальной строке.
Отдаёт -1, если поисковая строка не найдена.
'JavaScript is a great language. Yes I mean JavaScript'.lastIndexOf('Script') // 47 'JavaScript'.lastIndexOf('C++') // -1
match()
А вот работа с регулярными выражениями RegEx.
'Hi Flavio'.match(/avio/) // Array [ 'avio' ] 'Test 123123329'.match(/\d+/) // Array [ "123123329" ] 'hey'.match(/(hey|ho)/) // Array [ "hey", "hey" ] '123s'.match(/^(\d{3})(\w+)$/) // Array [ "123s", "123", "s" ] '123456789'.match(/(\d)+/) // Array [ "123456789", "9" ] '123s'.match(/^(\d{3})(?:\s)(\w+)$/) // null '123 s'.match(/^(\d{3})(?:\s)(\w+)$/) // Array [ "123 s", "123", "s" ] 'I saw a bear'.match(/\bbear/) // Array ["bear"] 'I saw a beard'.match(/\bbear/) // Array ["bear"] 'I saw a beard'.match(/\bbear\b/) // null 'cool_bear'.match(/\bbear\b/) // null
padEnd()
Смысл этого метода в том, чтобы добавлять в строку символы и пробелы, пока она не достигнет заданной длины.
padEnd() был представлен в ES2017, как метод добавляющий символы в конец строки.
'test'.padEnd(4) // 'test' 'test'.padEnd(5) // 'test '
padStart()
Смысл этого метода в том, чтобы добавлять строки или символы как в предыдущем методе, но уже с самого начала строки.
'test'.padStart(4) // 'test' 'test'.padStart(5) // ' test'
repeat()
Этот метод был представлен в ES2015 и повторяет строки заданное количество раз.
'Ho'.repeat(3) // 'HoHoHo'
Отдает пустую строку, если параметр не указан или параметр равен нулю. А в случае с отрицательным числом вы получите RangeError.
replace()
Этот метод находит первое упоминание str1 в заданной строке и заменяет его на str2.
Отдаёт новую строку, не трогая оригинальную.
'JavaScript'.replace('Java', 'Type') // 'TypeScript'
Вы можете передать регулярное выражение как первый аргумент:
'JavaScript'.replace(/Java/, 'Type') // 'TypeScript'
search()
Отдаёт расположение первого совпадения строки str в заданной строке.
Этот метод отдаёт индекс начала упоминания или -1, если такого не было найдено.
'JavaScript'.search('Script') // 4 'JavaScript'.search('TypeScript') // -1
Вы можете использовать регулярные выражения (и на самом деле, даже если вы передаёте строку, то внутренне оно тоже применяется как регулярное выражение).
'JavaScript'.search(/Script/) // 4 'JavaScript'.search(/script/i) // 4 'JavaScript'.search(/a+v/) // 1
slice()
Отдает новую строку, которая является частью строки на которой применялся метод, от позиций begin до end.
Оригинальная строка не изменяется.
end опциональна.
'This is my car'.slice(5) // is my car 'This is my car'.slice(5, 10) // is my
Если вы выставите первым параметром отрицательное число, то начальный индекс будет считаться с конца и второй параметр тоже должен быть отрицательным, всегда ведя отсчет с конца:
'This is my car'.slice(-6) // my car 'This is my car'.slice(-6, -4) // my
split()
Этот метод вырезает строку при её нахождении в строке на которой применяется метод (чувствительный к регистру) и отдаёт массив с токенами.
const phrase = 'I love my dog! Dogs are great' const tokens = phrase.split('dog') tokens // ["I love my ", "! Dogs are great"]
startsWith()
Проверяет начинается ли строка со значения str.
Вы можете вызвать startsWith() на любой строке, указать подстроку и проверить отдаёт результат true или false.
'testing'.startsWith('test') // true 'going on testing'.startsWith('test') // false
Этот метод допускает второй параметр, который позволит вам указать с какого символа вам надо начать проверку:
'testing'.startsWith('test', 2) // false 'going on testing'.startsWith('test', 9) // true
toLowerCase()
Этот метод отдаёт новую строку с текстом в нижнем регистре.
Не изменяет изначальную строку.
Не принимает параметры.
'Testing'.toLowerCase() // 'testing'
Работает как и toLocaleLowerCase(), но не учитывает локали.
toUpperCase()
Отдаёт новую строку с текстом в верхнем регистре.
Не изменяет оригинальную строку.
Не принимает параметры.
'Testing'.toUpperCase() // 'TESTING'
Если вы передадите пустую строку, то он возвратит пустую строку.
Метод похож на toLocaleUpperCase(), но не принимает параметры.
toString()
Отдает строку из заданного строчного объекта.
const str = new String('Test') str.toString() // 'Test'
trim()
Отдает новую строку удаляя пробелы вначале и в конце оригинальной строки.
'Testing'.trim() // 'Testing' ' Testing'.trim() // 'Testing' ' Testing '.trim() // 'Testing' 'Testing '.trim() // 'Testing'
trimEnd()
Отдаёт новую строку, удаляя пробелы только из конца оригинальной строки.
'Testing'.trimEnd() // 'Testing' ' Testing'.trimEnd() // ' Testing' ' Testing '.trimEnd() // ' Testing' 'Testing '.trimEnd() // 'Testing'
trimStart()
Отдаёт новую строку, удаляя пробелы из начала оригинальной строки.
'Testing'.trimStart() // 'Testing' ' Testing'.trimStart() // 'Testing' ' Testing '.trimStart() // 'Testing ' 'Testing'.trimStart() // 'Testing'
valueOf()
Отдает строчное представление заданного строчного объекта:
const str = new String('Test') str.valueOf() // 'Test'
Это тоже самое, что и toString()
Теперь пройдемся по числовым методам
isInteger()
Отдаст true, если переданное значение является целым числом. Всё иное, такое как, логические значения, строки, объекты, массивы, отдают false.
Number.isInteger(1) // true Number.isInteger(-237) // true Number.isInteger(0) // true Number.isInteger(0.2) // false Number.isInteger('Flavio') // false Number.isInteger(true) // false Number.isInteger({}) // false Number.isInteger([1, 2, 3]) // false
isNaN()
NaN это особый случай. Число является NaN, только если оно NaN или если это выражения деления ноль на ноль, что отдаёт NaN. Во всех других случаях мы можем передать ему что захотим, но получим false:
Number.isNaN(NaN) // true Number.isNaN(0 / 0) // true Number.isNaN(1) // false Number.isNaN('Flavio') // false Number.isNaN(true) // false Number.isNaN({}) // false Number.isNaN([1, 2, 3]) // false
isSafeInteger()
Число может удовлетворять Number.isInteger(), но не Number.isSafeInteger(), если оно заходит за пределы безопасных целых чисел.
Так что, всё что выше 2⁵³ и ниже -2⁵³ не является безопасным.
Number.isSafeInteger(Math.pow(2, 53)) // false Number.isSafeInteger(Math.pow(2, 53) - 1) // true Number.isSafeInteger(Math.pow(2, 53) + 1) // false Number.isSafeInteger(-Math.pow(2, 53)) // false Number.isSafeInteger(-Math.pow(2, 53) - 1) // false Number.isSafeInteger(-Math.pow(2, 53) + 1) // true
parseFloat()
Парсит аргумент как дробное число и отдаёт его. Аргумент при этом является строкой:
Number.parseFloat('10') // 10 Number.parseFloat('10.00') // 10 Number.parseFloat('237,21') // 237 Number.parseFloat('237.21') // 237.21 Number.parseFloat('12 34 56') // 12 Number.parseFloat(' 36 ') // 36 Number.parseFloat('36 is my age') // 36 Number.parseFloat('-10') // -10 Number.parseFloat('-10.2') // -10.2
Как вы видите Number.parseFloat() довольно гибок. Он также может конвертировать строки со словами, выделяя только первое число, но в этом случае строка должна начинаться с числа:
Number.parseFloat('I am Flavio and I am 36') // NaN
parseInt()
Парсит аргумент как целое число и отдаёт его:
Number.parseInt('10') // 10 Number.parseInt('10.00') // 10 Number.parseInt('237,21') // 237 Number.parseInt('237.21') // 237 Number.parseInt('12 34 56') // 12 Number.parseInt(' 36 ') // 36 Number.parseInt('36 is my age') // 36
Как вы видите Number.parseInt() тоже гибок. Он также может конвертировать строки со словами, выделяя первое число, строка должна начинаться с числа.
Number.parseInt('I am Flavio and I am 36') // NaN
Вы можете передать второй параметр, чтобы указать систему счисления. Десятичная стоит по-дефолту, но вы можете применять восьмеричные и шестнадцатеричные числовые конверсии:
Number.parseInt('10', 10) // 10 Number.parseInt('010') // 10 Number.parseInt('010', 8) // 8 Number.parseInt('10', 8) // 8 Number.parseInt('10', 16) // 16