Літерал
Загально
Рядок є літеральним і є НЕмутабельним об’єктом. Може бути створений шляхом написання тексту (групи символів), оточений одинарними ‘, подвійними “. Ми можемо писати багаторядкові рядки, використовуючи гравіс `. Ось приклад рядкового літералу 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: " & 10Escape-послідовності
Використовуються для представлення символів, які не можна вводити безпосередньо, таких як символи нового рядка, табуляції, лапки тощо. Вони починаються зі зворотного слешу \. Ось основні 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-код символа в рядку.