Поиск длины строки

C#:
Поиск длины строки

Как это сделать:

В C# свойство string.Length дает вам количество символов в строке. Вот как его использовать:

using System;

class Program
{
    static void Main()
    {
        string example = "Привет, мир!";
        Console.WriteLine(example.Length); // Вывод: 13
    }
}

Легко, правда? Но помните, оно считает символы, а не байты. С эмодзи или специальными символами все может стать сложнее. Об этом позже.

Подробнее

Исторически, нахождение длины строки было связано с управлением и манипуляцией памятью в программировании. Поскольку C# является языком высокого уровня, он абстрагирует эту низкоуровневую работу. Тем не менее, хорошо знать, что находится под капотом.

Альтернативы? Конечно! Вы можете встретить example.ToCharArray().Length на практике, но это просто лишняя работа для получения того же результата.

Теперь о тех сложных символах. Свойство Length в C# подсчитывает объекты char строки, каждый из которых представляет собой единицу кода UTF-16. Это нормально, пока вы не столкнетесь с суррогатными парами – символами вроде эмодзи, которым нужны два объекта char. Вот в чем дело: Length считает их за два. Да.

Для точного подсчета визуальных символов или кластеров графем вам понадобится класс StringInfo из System.Globalization:

using System;
using System.Globalization;

class Program
{
    static void Main()
    {
        string example = "👍"; // Эмодзи в виде пальца вверх

        Console.WriteLine(example.Length); // Вывод: 2 <- Из-за суррогатной пары!
        Console.WriteLine(new StringInfo(example).LengthInTextElements); // Вывод: 1
    }
}

Понимаете разницу? Это не просто академический интерес; это может значительно повлиять на обработку текста.

Смотрите также

Изучите больше с этими ресурсами:

Знайте свои строки, обращайтесь с ними мудро и пишите код, который считается – во всех смыслах.