🧑‍💻String

Вот полное руководство по основным методам и свойствам типа данных String в Dart, с примерами использования и рекомендациями, где они могут быть полезны.

Свойства

  1. length Возвращает количество символов в строке.

    String text = "Hello, Dart!";
    print(text.length); // Вывод: 12

    Где использовать: Определение длины строки, например, для валидации длины введённого пароля.

  2. isEmpty Возвращает true, если строка пуста (длина 0).

    String text = "";
    print(text.isEmpty); // Вывод: true

    Где использовать: Проверка на пустую строку перед выполнением операций с текстом.

  3. isNotEmpty Возвращает true, если строка не пуста.

    String text = "Hello";
    print(text.isNotEmpty); // Вывод: true

    Где использовать: Используется, когда нужно убедиться, что строка содержит данные, например, перед отправкой формы.

Методы

  1. contains Проверяет, содержит ли строка указанную подстроку.

    String text = "Hello, Dart!";
    print(text.contains("Dart")); // Вывод: true

    Где использовать: Для поиска ключевых слов в тексте.

  2. substring Возвращает подстроку, начиная с позиции startIndex до endIndex.

    String text = "Hello, Dart!";
    print(text.substring(7, 11)); // Вывод: Dart

    Где использовать: Извлечение частей текста, например, имени пользователя из email.

  3. indexOf Возвращает индекс первого вхождения подстроки.

    String text = "Hello, Dart!";
    print(text.indexOf("Dart")); // Вывод: 7

    Где использовать: Поиск позиции подстроки для разделения текста.

  4. lastIndexOf Возвращает индекс последнего вхождения подстроки.

    String text = "Dart is fun, and Dart is powerful.";
    print(text.lastIndexOf("Dart")); // Вывод: 20

    Где использовать: Нахождение последнего вхождения для обработки строк.

  5. toLowerCase и toUpperCase Преобразует строку в нижний или верхний регистр.

    String text = "Hello, Dart!";
    print(text.toLowerCase()); // Вывод: hello, dart!
    print(text.toUpperCase()); // Вывод: HELLO, DART!

    Где использовать: Стандартизация регистра, например, для поиска без учёта регистра.

  6. trim, trimLeft, trimRight Удаляют пробелы в начале и/или конце строки.

    String text = "   Dart is awesome!   ";
    print(text.trim());       // Вывод: "Dart is awesome!"
    print(text.trimLeft());   // Вывод: "Dart is awesome!   "
    print(text.trimRight());  // Вывод: "   Dart is awesome!"

    Где использовать: Очистка строки от лишних пробелов перед обработкой.

  7. replaceAll и replaceFirst Заменяет все вхождения подстроки или только первое.

    String text = "Dart is cool. Dart is fast.";
    print(text.replaceAll("Dart", "Flutter"));   // Вывод: Flutter is cool. Flutter is fast.
    print(text.replaceFirst("Dart", "Flutter")); // Вывод: Flutter is cool. Dart is fast.

    Где использовать: Замена слов или символов, например, в шаблонах текста.

  8. split Разделяет строку по указанному разделителю и возвращает список.

    String text = "apple,banana,grape";
    List<String> fruits = text.split(",");
    print(fruits); // Вывод: [apple, banana, grape]

    Где использовать: Разбиение текста на части, например, CSV-данные.

  9. startsWith и endsWith Проверяют, начинается или заканчивается ли строка на указанную подстроку.

    String text = "Hello, Dart!";
    print(text.startsWith("Hello")); // Вывод: true
    print(text.endsWith("Dart!"));   // Вывод: true

    Где использовать: Проверка формата текста, например, проверка на конкретное расширение файла.

  10. codeUnitAt и codeUnits Возвращают Unicode код символа или список кодов символов в строке.

    String text = "Dart";
    print(text.codeUnitAt(0)); // Вывод: 68 (код 'D')
    print(text.codeUnits);     // Вывод: [68, 97, 114, 116]

    Где использовать: Для работы с Unicode, например, шифрование текста.

  11. compareTo Сравнивает строки лексикографически.

    String a = "apple";
    String b = "banana";
    print(a.compareTo(b)); // Вывод: -1 (a перед b)

    Где использовать: Сортировка строк.

  12. padLeft и padRight Добавляют символы слева или справа до указанной ширины.

    String text = "5";
    print(text.padLeft(3, '0')); // Вывод: 005

    Где использовать: Форматирование чисел, например, для представления времени в виде 00:05.

  13. replaceAllMapped Заменяет все вхождения шаблона, используя функцию обратного вызова.

    String text = "123-456-7890";
    print(text.replaceAllMapped(RegExp(r'\d'), (match) => '*'));
    // Вывод: ***-***-****

    Где использовать: Маскирование данных, например, скрытие части телефонного номера.

  14. splitMapJoin Разделяет строку по шаблону и объединяет результат.

    String text = "Dart and Flutter";
    print(text.splitMapJoin("and", onMatch: (m) => "&", onNonMatch: (n) => n.toUpperCase()));
    // Вывод: DART & FLUTTER

    Где использовать: Для более гибкой замены и обработки текста.

  15. allMatches и matchAsPrefix Возвращают все совпадения или проверяют, начинается ли строка с шаблона.

    String text = "Dart is a Dart language";
    Iterable<Match> matches = RegExp(r'Dart').allMatches(text);
    for (Match m in matches) {
      print("Found Dart at: ${m.start}");
    }
    // Вывод:
    // Found Dart at: 0
    // Found Dart at: 11

    Где использовать: Поиск всех вхождений подстроки для подсчета или анализа.

Этот пример показывает использование различных методов и свойств String с TextField для ввода текста и Text для отображения результата.

Описание кода

  • _inputText хранит текст, введённый пользователем.

  • _outputText хранит результаты применения различных методов String.

  • Метод _processText() обрабатывает текст, применяя к нему различные методы, и обновляет состояние.

  • TextField позволяет вводить текст, который сохраняется в переменной _inputText.

  • ElevatedButton вызывает метод _processText(), который применяет методы и обновляет вывод.

  • Text и SingleChildScrollView отображают результат, позволяя прокручивать его, если он выходит за пределы экрана.

Этот код даст полное понимание применения различных методов String в приложении Flutter.

Last updated