Javascript цикл по символам строки

Строки и объект String
Последнее обновление: 06.04.2018
Для создания строк мы можем как напрямую присваивать переменной строку:
let name = “Tom”;
Для работы со строками предназначен объект String, поэтому также можно использовать конструктор String:
var name = new String(“Tom”);
Но как правило, используется первый более краткий способ. В первом случае JavaScript при необходимости автоматически преобразует переменную примитивного типа в объект String.
Объект String имеет большой набор свойств и методов, с помощью которых мы можем манипулировать строками.
Свойство length указывает на длину строки:
var hello = “привет мир”; console.log(“В строке ‘” + hello + “‘ ” + hello.length + ” символов”);
Метод repeat() позволяет создать строку путем многократного повторения другой строки. Количество повторов передается в качестве аргумента:
let hello = “hello “; console.log(hello.repeat(3)); // hello hello hello
Шаблоны строк
Шаблоны строк позволяют вставлять в строку различные значения. Для этого строки заключаются в косые кавычки:
let name = “Tom”; let hello = `Hello ${name}`; console.log(hello); // Hello Tom let age = 23; let = `${name} is ${age} years old`; console.log(); // Tom is 23 years old
Для вставки значения в строку оно заключается в фигурные скобки, перед которыми ставится знак доллара.
Также вместо скалярных значений могут добавляться свойства сложных объектов или результаты выражений:
let tom ={ name: “Tom”, age: 25 } let = `${tom.name} is ${tom.age} years old`; console.log(); // Tom is 23 years old sum(x, y){ return x + y; } let a = 5, b = 4; let result = `${a} + ${b} = ${sum(a, b)}`; console.log(result); // 5 + 4 = 9
Поиск в строке
Для поиска в строки некоторой подстроки используются методы indexOf() (индекс первого вхождения подстроки) и lastIndexOf() (индекс последнего вхождения подстроки). Эти методы принимают два параметра:
Подстроку, которую надо найти
Необязательный параметр, который указывает, с какого символа следует проводить поиск подстроки в строке
Оба этих метода возвращают индекс символа, с которого в строке начинается подстрока. Если подстрока не найдена, то возвращается число -1.
let hello = “привет мир. пока мир”; let key = “мир”; let firstPos = hello.indexOf(key); let lastPos = hello.lastIndexOf(key); console.log(“Первое вхождение: “, firstPos); // 7 console.log(“Последнее вхождение: “, lastPos); // 17
Еще один метод – includes() возвращает true, если строка содержит определенную подстроку.
let hello = “привет мир. пока мир”; console.log(hello.includes(“мир”)); // true console.log(hello.includes(“миг”)); // false
С помощью второго дополнительного параметра можно определить индекс, с которого будет начинаться поиск подстроки:
let hello = “привет мир. пока мир”; console.log(hello.includes(“мир”, 5)); // true console.log(hello.includes(“привет”, 6)); // false
Выбор подстроки
Для того, чтобы вырезать из строки подстроку, применяются методы substr() и substring().
Метод substring() принимает два параметра:
индекс символа в строке, начиная с которого надо проводить обрезку строки
индекс, до которого надо обрезать строку
let hello = “привет мир. пока мир”; let world = hello.substring(7, 10); // с 7-го по 10-й индекс console.log(world); // мир
Метод substr() также в качестве первого параметра принимает начальный индекс подстроки, а в качестве второго – длину вырезаемой подстроки:
let hello = “привет мир. пока мир”; let bye = hello.substr(12, 4); console.log(bye); // пока
Если второй параметр не указывается, то обрезается вся остальная часть строки:
let hello = “привет мир. пока мир”; let bye = hello.substr(12); console.log(bye); // пока мир
Управление регистром
Для изменения регистра имеются методы toLowerCase() (для перевода в нижний регистр) и toUpperCase() (для перевода в верхний регистр).
let hello = “Привет Том”; console.log(hello.toLowerCase()); // привет том console.log(hello.toUpperCase()); // ПРИВЕТ ТОМ
Получение символа по индексу
Чтобы получить определенный символ в строке по индексу, можно применять методы charAt() и charCodeAt(). Оба этих метода в качестве параметра принимают индекс символа:
let hello = “Привет Том”; console.log(hello.charAt(2)); // и console.log(hello.charCodeAt(2)); // 1080
Но если в качестве результата метод charAt() возвращает сам символ, то метод charCodeAt() возвращает числовой код этого символа.
Удаление пробелов
Для удаления начальных и концевых пробелов в стоке используется метод trim():
let hello = ” Привет Том “; let beforeLength = hello.length; hello = hello.trim(); let afterLength = hello.length; console.log(“Длина строки до: “, beforeLength); // 15 console.log(“Длина строки после: “, afterLength); // 10
Объединение строк
Метод concat() объединяет две строки:
let hello = “Привет “; let world = “мир”; hello = hello.concat(world); console.log(hello); // Привет мир
Замена подстроки
Метод replace() заменяет первое вхождение одной подстроки на другую:
let hello = “Добрый день”; hello = hello.replace(“день”, “вечер”); console.log(hello); // Добрый вечер
Первый параметр метода указывает, какую подстроку надо заменить, а второй параметр – на какую подстроку надо заменить.
Разделение строки
Метод split() разбивает строку на массив подстрок по определенному разделителю. В качестве разделителя используется строка, которая передается в метод:
var message = “Сегодня была прекрасная погода”; var stringArray = message.split(” “); for(var str in stringArray) console.log(stringArray[str]);
Вывод браузера
Сегодня была прекрасная погода
Проверка начала и окончания строки
Метод startsWith() возвращает true, если строка начинается с определенной подстроки. А метод endsWith() возвращает true, если строка оканчивается на определенную подстроку.
let hello = “let me speak from my heart”; console.log(hello.startsWith(“let”)); // true console.log(hello.startsWith(“Let”)); // false console.log(hello.startsWith(“lets”)); // false console.log(hello.endsWith(“heart”)); // true console.log(hello.startsWith(“bart”)); // false
При этом играет роль регистр символов, и из примера выше мы видим, что “let” не эквивалентно “Let”.
Дополнительный второй параметр позволяет указать индекс (для startsWith – индекс с начала, а для endsWith – индекс с конца строки), относительно которого будет производиться сравнение:
let hello = “let me speak from my heart”; console.log(hello.startsWith(“me”, 4)); // true, “me” – 4 индекс с начала строки console.log(hello.startsWith(“my”, hello.length-8)); // true, “my” – 8 индекс с конца
Источник
- Кавычки
- Кодировка символов строки
- Длина строки
- Нумерация и доступ к символам строки
- Строки неизменяемые
- Управляющие последовательности
- Конкатенация
Тип данных строка (string) используется для представления текста. Соответственно, значениями типа string является текст. Любой текст в JavaScript является строкой.
Кавычки
Строки в JavaScript должны быть заключены в кавычки. В JavaScript существует три вида кавычек: двойные (” “), одинарные (‘ ‘) и обратные (` `):
“Строка в двойных кавычках” ‘Строка в одинарных кавычках’ `Строка в обратных кавычках`
Вид кавычек в начале и конце строки должен совпадать.
Строки могут состоять из нуля и более символов:
” // Пустая строка “Строка” // Не пустая строка
Строки с двойными и одинарными кавычками ничем не отличаются между собой по функционалу – они могут содержать лишь текст и управляющие последовательности. А вот строки с обратными кавычками имеют более широкий функционал. Такие строки могут содержать так называемые подстановки, обозначаемые знаком доллара и фигурными скобками ${выражение}. Подстановки могут содержать любые произвольные выражения:
let стр = “Мир!”; let стр2 = `Привет, ${стр}`; // Использование переменной в строке alert(стр2); // Привет, Мир! alert(`2 + 3 = ${2 + 3}.`); // 2 + 3 = 5.
Выражение, расположенное в подстановке (${…}) вычисляется, и его результат становится частью строки.
Строки в обратных кавычках могут занимать более одной строки, сохраняя все пробельные символы:
let числа = `Числа: 1 2`; alert(числа); // Числа: // 1 // 2
Строки с обратными кавычками называются строками-шаблонами или шаблонными литералами.
Строки, заключённые в одни кавычки, могут содержать другие кавычки:
“одинарные ‘кавычки’ и `обратные` внутри двойных” ‘а здесь “так” и `так`!’ `а здесь “так” и ‘так’!`
Для удобства, большие строковые литералы можно разбивать на несколько строк, заканчивая каждую строку, кроме последней, символом :
alert(“это всё одна длинная строка”); // это всё одна длинная строка alert(‘это всё одна длинная строка’); // это всё одна длинная строка alert(`это всё одна длинная строка`); // это всё одна длинная строка
Кодировка символов строки
Вне зависимости от того, какая кодировка установлена для страницы, в JavaScript для строк всегда используется кодировка UTF-16.
В JavaScript строка – это неизменяемая, упорядоченная последовательность 16-битных значений, каждое из которых представляет символ Unicode. Для представления символов Unicode в JavaScript используется кодировка UTF-16. Символы включают в себя буквы, цифры, знаки пунктуации, специальные символы и пробельные символы.
Длина строки
Длина строки – это количество 16-битных значений (а не самих символов), содержащихся в ней. Длину строки содержит свойство length:
alert(“Привет”.length ); // 6
Символы, кодовые пункты которых не умещаются в 16 бит, обрабатываются в соответствии с правилами кодировки UTF-16 как последовательности из двух 16-битных значений. Это означает, что строка, имеющая длину, равную 2 (два 16-битных значения), на деле может представлять единственный символ:
alert(“a”.length); // 1 alert(“????”.length); // 2
Нумерация и доступ к символам строки
Как уже было сказано, строка представляет собой упорядоченную последовательность 16-битных значений, каждому из которых соответствует определённый символ. Нумерация 16-битных значений в строке начинается с нуля, т. е. первое 16-битное значение находится под индексом 0, второе – под индексом 1 и т. д. Индекс – это порядковый номер.
Получить символ строки (состоящий из одного 16-битного значения) можно с помощью индекса, заключённого в квадратные скобки [индекс]:
let стр = “Привет”; alert(стр[0]); // П alert(стр[3]); // В
Чтобы с помощью индексов обратиться к символу, состоящему из двух 16-битных значений, нужно, используя конкатенацию, написать эти индексы так, чтобы в результате получилась последовательность из двух 16-битных значений:
let стр = “????”; alert(стр[0] + стр[1]); // “????”
Строки неизменяемые
В JavaScript строки неизменяемые. Это значит, что в уже существующей строке нельзя менять никакие символы или добавлять в неё что-то новое.
Так как строки неизменяемые, то методы, используемые для работы со строками, возвращают новые строки, а не изменяют ту строку, относительно которой они были вызваны:
let стр = “Привет!”; alert(стр.toUpperCase()); // “HELLO” – новое возвращаемое методом значение alert(стр); // “hello” – первоначальная строка не изменена
Чтобы изменить строку, можно создать новую строку и записать её в ту же самую переменную вместо старой строки:
let стр = “Строка”; стр = стр.toUpperCase(); alert(стр); // “СТРОКА”
Управляющие последовательности
В строковых литералах можно использовать управляющие последовательности. Управляющая последовательность – это последовательность, состоящая из обычных символов, которая обозначает символ, не представимый внутри строки другими способами. Управляющие последовательности предназначены для форматирования вывода текстового содержимого.
В таблице ниже представлены управляющие последовательности:
Последовательность | Значение |
---|---|