TypeScript:
Поиск длины строки
Как это сделать:
В TypeScript длину строки можно узнать, используя свойство .length
. Вот быстрый пример:
let greeting: string = "Привет, TypeScript!";
console.log(greeting.length); // Вывод: 18
Этот код объявляет строковую переменную с именем greeting
и затем выводит её длину в консоль.
Глубокое погружение
Свойство .length
унаследовано от JavaScript, предшественника TypeScript. Это простой и универсально поддерживаемый способ получения размера строки.
Существуют альтернативы, но они обычно усложняют задачу. Например, можно преобразовать строку в массив и подсчитать элементы:
let greetingArray: string[] = Array.from(greeting);
console.log(greetingArray.length); // Вывод: 18
Но зачем идти длинным путем? Свойство .length
эффективно, потому что строки хранятся в виде массивов символов под капотом, так что информация о длине немедленно доступна.
Теперь, допустим, вы работаете со строками на разных языках. Вы можете столкнуться с проблемами со специальными символами. Базовый подход с .length
подсчитывает единицы кода UTF-16, что может быть проблематично для символов, требующих две единицы кода, известных как суррогатные пары. В таких случаях свойство .length
может не дать вам подсчета фактических символов, также известных как кодовые точки.
Вот как вы можете обрабатывать строки с суррогатными парами:
function countCodePoints(str: string): number {
return Array.from(str).length;
}
let fancyGreeting: string = "Привет, 🌍!";
console.log(countCodePoints(fancyGreeting)); // Вывод: 9
Эта функция занимается тонкостями кодирования строк, чтобы обеспечить, чтобы каждый символ, независимо от того, состоит он из одной или двух единиц кода, был правильно подсчитан.
Смотрите также
- Руководство по TypeScript о строках: Руководство по TypeScript
- MDN Web Docs о свойстве длины строки: String.prototype.length
- Unicode и JavaScript: У JavaScript есть проблема с Unicode - Матиас Биненс