Строки и работа с текстом в 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. Пробуй, экспериментируй и создавай свои проекты!