🍎 Swift

Строки и работа с текстом в Swift 5.9: подробное руководство

Строки и работа с текстом в Swift

Введение: зачем нам работать с текстом?

Каждый день мы пишем сообщения, посты в соцсетях, комментарии. В программировании текст называется строкой (String). Строки помогают обрабатывать названия NFT, хештеги, тексты песен, статьи — всё, что состоит из букв, цифр и символов. Научившись работать со строками, ты сможешь создавать программы, которые анализируют тексты, ищут слова, обрезают лишнее и даже переворачивают фразы задом наперёд!

Основной синтаксис

В Swift строка создаётся с помощью двойных кавычек:

let названиеNFT = "Космический Кот #001"
var хештег = "#ЛучшийДеньДляПрограммирования"

Основные операции со строками:

  • Сложение строк (конкатенация) — соединяем две строки знаком +
  • Интерполяция — вставляем переменные в строку через \()
  • Длина строки — свойство .count
  • Доступ к символу — по индексу: строка[индекс]
  • Подстроки — берём часть строки через диапазон
  • Проверка вхождения — contains()
  • Разделение на слова — split()

Пример 1: Сложение и интерполяция

import Foundation

let имя = "Алиса"
let возраст = 12
let сообщение = "Привет, " + имя + "! Тебе " + String(возраст) + " лет."
print(сообщение)

// То же самое с интерполяцией (проще!)
let сообщение2 = "Привет, \(имя)! Тебе \(возраст) лет."
print(сообщение2)

Вывод:
Привет, Алиса! Тебе 12 лет.
Привет, Алиса! Тебе 12 лет.

Пример 2: Длина строки и доступ к символам

import Foundation

let хештег = "#КодингЭтоКруто"
print("Длина хештега: \(хештег.count) символов")

// Получаем первый символ
let первыйСимвол = хештег[хештег.startIndex]
print("Первый символ: \(первыйСимвол)")

// Получаем последний символ
let последнийСимвол = хештег[хештег.index(before: хештег.endIndex)]
print("Последний символ: \(последнийСимвол)")

Вывод:
Длина хештега: 14 символов
Первый символ: #
Последний символ: о

Пример 3: Получение подстроки (части строки)

import Foundation

let статья = "SuperGadget X — это революционный гаджет, который меняет всё!"
let начало = статья.startIndex
let конец = статья.index(начало, offsetBy: 25)
let заключение = статья[начало...конец]
print("Первые 26 символов: \(заключение)")

Вывод:
Первые 26 символов: SuperGadget X — это револ

Пример 4: Разделение строки на слова и подсчёт

import Foundation

let текстПесни = "В лесу родилась ёлочка в лесу она росла"
let слова = текстПесни.split(separator: " ")
print("Количество слов в песне: \(слова.count)")

// Выведем все слова
for слово in слова {
    print(слово)
}

Вывод:
Количество слов в песне: 7
В
лесу
родилась
ёлочка
в
лесу
она
росла

Разбор типичных задач

Задача 1: Анализ названия NFT

Нужно проверить, что название NFT не слишком длинное (не больше 20 символов) и содержит слово "Кот".

import Foundation

let названиеNFT = "Космический Кот #001"
if названиеNFT.count <= 20 {
    print("Название подходит по длине!")
} else {
    print("Слишком длинное название")
}

if названиеNFT.contains("Кот") {
    print("В названии есть 'Кот' — отлично!")
} else {
    print("Добавьте 'Кот' в название")
}

Задача 2: Обрезка хештега

Возьмём только первые 10 символов длинного хештега.

import Foundation

let хештег = "#ЛучшийДеньДляПрограммирования"
let индексОбрезки = хештег.index(хештег.startIndex, offsetBy: 10)
let короткийХештег = хештег[..<индексОбрезки]
print("Короткий хештег: \(короткийХештег)")

Вывод:
Короткий хештег: #ЛучшийДен

Задача 3: Подсчёт слов в песне

import Foundation

let песня = "Мы едем едем едем в далёкие края"
let слова = песня.split(separator: " ")
print("В песне \(слова.count) слов")

Задача 4: Получение заключительной части статьи

Берём последние 30 символов статьи.

import Foundation

let статья = "SuperGadget X — это революционный гаджет, который меняет всё. Он быстрее, легче и умнее предыдущих моделей."
let длина = статья.count
let начало = статья.index(статья.startIndex, offsetBy: длина - 30)
let конец = статья.endIndex
let заключение = статья[начало..<конец]
print("Заключение статьи: \(заключение)")

Задача 5: Обратное сообщение

Переворачиваем строку задом наперёд.

import Foundation

let сообщение = "Привет подписчики!"
let перевернутое = String(сообщение.reversed())
print("Оригинал: \(сообщение)")
print("Перевёрнуто: \(перевернутое)")

Вывод:
Оригинал: Привет подписчики!
Перевёрнуто: !икчипсдоп тевирП

Частые ошибки новичков

  • Забывают про индексы — нельзя просто написать строка[5] как в других языках. Нужно использовать строка.index(строка.startIndex, offsetBy: 5)
  • Путают count и length — в Swift используется .count
  • Пытаются изменить let-строку — строки с let неизменяемы. Используйте var, если нужно менять
  • Забывают импортировать Foundation — для некоторых операций (например, reversed()) он нужен
  • Не проверяют длину перед обрезкой — если offsetBy больше длины строки, программа упадёт

Итоговый пример: Анализ поста в соцсети

Представь, что ты SMM-менеджер. Тебе нужно проанализировать пост: посчитать количество слов, проверить, есть ли хештег, и вывести первые 50 символов.

import Foundation

print("Введите текст поста:")
let пост = readLine()!

// 1. Количество слов
let слова = пост.split(separator: " ")
print("Количество слов: \(слова.count)")

// 2. Проверка на хештег
if пост.contains("#") {
    print("В посте есть хештег!")
} else {
    print("Хештег не найден")
}

// 3. Первые 50 символов (если пост длиннее)
if пост.count > 50 {
    let индекс = пост.index(пост.startIndex, offsetBy: 50)
    let превью = пост[..<индекс]
    print("Превью: \(превью)...")
} else {
    print("Весь пост: \(пост)")
}

// 4. Переворачиваем пост для креативного эффекта
let перевернутыйПост = String(пост.reversed())
print("Перевёрнутый пост: \(перевернутыйПост)")

Пример работы:

Введите текст поста:
Сегодня отличный день для программирования! #SwiftУчим
Количество слов: 5
В посте есть хештег!
Превью: Сегодня отличный день для программирования! #Swi...
Перевёрнутый пост: иМчиУтфивS# !яинавориммаргорп ялед йынчилто яндогес

Теперь ты умеешь работать со строками в Swift! Эти навыки пригодятся для создания любых текстовых программ — от анализа постов до обработки названий NFT. Пробуй, экспериментируй и создавай свои проекты!