Літерал
Загально
Рядок є літеральним і є НЕмутабельним об’єктом. Може бути створений шляхом написання тексту (групи символів), оточений одинарними ‘
, подвійними “
. Ми можемо писати багаторядкові рядки, використовуючи гравіс `
. Ось приклад рядкового літералу Mash Script. Тут hello world! — це рядковий літерал, який присвоюється змінній.
// in single quote
string s = 'hello world!';
// in double quotes
string t = "hello world!";
// multi-line string
string m = `hello
world!`;
Out.println(s);
Out.println(t);
Out.println(m);
Вихід:
hello world!
hello world!
hello
world!
Template рядки (Шаблони)
У Mash Script можна використовувати форматовані рядки (також: шаблони), аналогічні f-рядкам у Python, але вони підтримуються лише в одинарних лапках '…'
. Такий формат дозволяє вставляти вирази прямо всередину рядка за допомогою синтаксису {…}
. Ось приклад:
string name = 'Johan';
// Ідентичні (Шаблон та конкатеновані рядки):
string str1 = 'Hello {name}!'; // Hello Johan!
string str2 = 'Hello ' & name & '!'; // Hello Johan!
// Не працює (Через подвійні лапки):
string str3 = "Hello {name}!"; // Hello {name}!
Конкатенація рядків
Конкатенація рядків у Mash Script підтримує різні підходи для зручного з’єднання тексту. Можна використовувати просте розташування рядків поруч для їх автоматичної конкатенації, використовувати оператори +
та &
або мульти-рядки.
string text = (
"Hello,"
"World!" // Конкатенація
'!!!'
);
string text2 = `Hello,
World!
!!!`; // Багаторядковий
string text3 = "Hello, " & "World" "!" // конкатенація
// Помилка: шаблони та звичайні рядки не поєднуються автоматично.
string text = (
"Hello,"
'{name}!'
);
// Натомість використовуйте оператор конкатенації: &
// *Оператор автоматично викликає метод __string__ у операндів: "Age: " & 10
Escape-послідовності
Використовуються для представлення символів, які не можна вводити безпосередньо, таких як символи нового рядка, табуляції, лапки тощо. Вони починаються зі зворотного слешу \
. Ось основні escape-послідовності:
\'
– одинарна лапка. Використовується для введення одинарної лапки всередині рядка, що теж обгорнутий в одинарні лапки.\"
– подвійна лапка. Дозволяє ввести подвійні лапки всередині рядка, обгорнутого в подвійні лапки.\\
– зворотний слеш. Вставляє сам символ зворотного слешу.\n
– новий рядок. Використовується для переходу на наступний рядок.\t
– табуляція. Додає табуляцію в текст.\r
– повернення каретки. Використовується для повернення в початок рядка.\b
– backspace, використовується для видалення останнього символу.\uXXXX
– Юнікод-символ, деXXXX
– код символу.\xNN
– символ з ASCII-кодомNN
у шістнадцятковому форматі.
"Hello, \"...\"" // Hello, "..."
"_)\r(" // ()
"Fo\bo, Baz" // Fo, Baz
"C:\\user" // C:\user
"C:\user" // Помилка: SyntaxError: truncated \uXXXX escape.
"Hola?\nHello?"
// Hola?
// Hello?
Методи рядків
Ось опис методів рядків у Mash Script:
Тут немає анотацій для параметрів, які приймають тип string.
Методи об’єкту
replace(old, new, count: int=-1)
– Заміна всіх входженьold
іншим підрядком (new
).split(sep=” ”) → array[string]
– Розділення рядка на частини на основі певного роздільника (sep
).count(substr) → int
– Підрахунок кількості входжень підрядка в рядку.join(arr: array)
– Об'єднання елементів масиву в один рядок, використовуючи поточний рядок як роздільник.find(substr, start: int=null, end: int=null) → int
– Пошук першого входження підрядка в рядку, повертаючи його індекс або-1
, якщо не знайдено.addr(substr, count: int=1)
– Заповнює рядок пробілами або іншими символами справа, щоб досягти певної довжини.addl(substr, count: int=1)
– Додавання підрядка на початок поточного рядка, щоб досягти певної довжини.startswith(substr) → boolean
– Перевірка, чи починається рядок з певного підрядка.endswith(substr) → boolean
– Перевірка, чи закінчується рядок певним підрядком.expandtabs()
– Замінює символи табуляції пробілами відповідно до заданої ширини табуляції.isempty() → boolean
– Перевіряє, чи є рядок порожнім.format([args], mask=”%”)
– Форматує рядок за допомогою вказаних параметрів.get_chars(index: int, count: int)
– Отримання символів з рядка за вказаними індексами.charat(index: int)
– Отримання символа за заданим індексом.equals(str) → boolean
– Перевірка на рівність рядків, ігноруючи регістр ('A' == 'a'
).index(substr)
– Повертає перший індекс входження підрядка.rindex(substr)
– Повертає останній індекс входження підрядка.swapcase()
– Змінює регістр кожного символа на протилежний.lower()
– Перетворює всі символи рядка на малі.upper()
– Перетворює всі символи рядка на великі.title()
– Робить першу літеру кожного слова великою.set_char(index: int, char) → string
– Встановлює символ на задану позицію в рядку.set_chars(index: int, count: int, substr) → string
– Встановлює групу символів у рядку за вказаними індексами.isnumber() → boolean
– Перевіряє, чи є рядок числом.isint() → boolean
– Перевіряє, чи є рядок цілим числом.isdigit() → boolean
– Перевіряє, чи складається рядок лише з цифр.isalpha() → boolean
– Перевіряє, чи складається рядок лише з літер.isalnum() → boolean
– Перевіряє, чи складається рядок лише з букв та цифр.islower() → boolean
– Перевіряє, чи всі літери в рядку є малими.isupper() → boolean
– Перевіряє, чи всі літери в рядку є великими.istitle() → boolean
– Перевіряє, чи кожне слово в рядку починається з великої літери.isspace() → boolean
– Перевіряє, чи складається рядок лише з пробілів.
Методи класу
string.from_ascii(char) → string
– Створює рядок з ASCII-коду.string.ascii(char) → string
– Отримує ASCII-код символа в рядку.