Строки и интерполяция
Работа со строками в Julia: интерполяция, склейка, полезные функции и отличия от Python.
Строка в Julia — неизменяемая последовательность символов Unicode, тип
String. Отдельный символ имеет типChar.
Создание строк
Строки в Julia заключаются только в двойные кавычки. Одинарные кавычки зарезервированы под одиночный символ Char — это отличие от Python, где кавычки взаимозаменяемы.
s = "Привет"
c = 'A' # это Char, не строка
println(typeof(s))
println(typeof(c))Вывод:
String Char
Интерполяция через $
Вместо форматирования через + или format Julia использует интерполяцию: знак $ вставляет значение переменной или целого выражения прямо в строку. Это удобнее и быстрее конкатенации.
name = "Анна"
age = 30
println("Меня зовут $name, мне $age лет")
println("Через 5 лет будет $(age + 5)")Вывод:
Меня зовут Анна, мне 30 лет Через 5 лет будет 35
Для выражений используйте $(...), для простой переменной достаточно $name.
Склейка строк
Сложение + для строк в Julia не работает (ещё одно отличие от Python). Для конкатенации есть оператор * и функция string:
a = "Code"
b = "Chick"
println(a * b)
println(string(a, " ", b, "!"))
println("ха"^3) # повтор строкиВывод:
CodeChick Code Chick! хахаха
Почему *, а не +? Авторы Julia опираются на математику: конкатенация некоммутативна (порядок важен), а в математике некоммутативную операцию принято обозначать умножением, а не сложением.
Полезные функции
| Функция | Назначение |
length(s) | число символов |
uppercase(s) / lowercase(s) | смена регистра |
occursin("под", s) | есть ли подстрока |
replace(s, "a" => "b") | замена |
split(s, ",") | разбить на части |
strip(s) | убрать пробелы по краям |
Многострочные строки
text = """
Первая строка
Вторая строка
"""Как работает под капотом
Строки Julia хранятся в кодировке UTF-8 и неизменяемы: любая «модификация» создаёт новую строку. Из-за UTF-8 один символ может занимать несколько байтов, поэтому индексация строк в Julia работает по байтовым позициям, а не по символам. Для перебора именно символов используйте цикл for ch in s или функцию eachindex — это безопаснее, чем обращаться по числовому индексу.
Частые ошибки
Две классические ловушки. Первая — попытка склеить строки через + (будет ошибка, нужно *). Вторая — обращение s[2] к строке с не-ASCII символами: из-за UTF-8 второй байт может попасть в середину символа и вызвать ошибку. Перебирайте строки циклом по символам, а не по индексам.
Итоги
- Строки — только в двойных кавычках; одинарные — для
Char. - Интерполяция через
$nameи$(выражение)— основной способ форматирования. - Конкатенация — оператором
*(не+), повтор —^. - Строки неизменяемы и хранятся в UTF-8; перебирайте их по символам, а не по байтовым индексам.