# Строки

Здесь описаны операторы и функции для работы со строками (тип **str**).

* [bool( str s ) bool](/stdlib/string.md#bool-str-s-bool)
* [float( str s ) float](/stdlib/string.md#float-str-s-float)
* [int( str s ) int](/stdlib/string.md#int-str-s-int)
* [Find( str s, str substr ) int](/stdlib/string.md#find-str-s-str-substr-int)
* [Format( str s, anytype args... ) str](/stdlib/string.md#format-str-s-anytype-args-str)
* [HasPrefix( str s, str prefix ) bool](/stdlib/string.md#hasprefix-str-s-str-prefix-bool)
* [HasSuffix( str s, str suffix ) bool](/stdlib/string.md#hassuffix-str-s-str-suffix-bool)
* [Left( str s, int i ) string](/stdlib/string.md#left-str-s-int-i-str)
* [Lines( str s ) arr.str](/stdlib/string.md#lines-str-s-arr-str)
* [Lower( str s ) string](/stdlib/string.md#lower-str-s-str)
* [Repeat( str s, int count ) str](/stdlib/string.md#repeat-str-s-int-count-str)
* [Replace( str s, str old, str new ) str](/stdlib/string.md#replace-str-s-str-old-str-new-str)
* [Right( str s, int i ) string](/stdlib/string.md#right-str-s-int-i-str)
* [Size( int size, str format ) string](/stdlib/string.md#size-int-size-str-format-str)
* [Split( str s, str sep ) arr.str](/stdlib/string.md#split-str-s-str-sep-arr-str)
* [Substr( str s, int off, int length ) str](/stdlib/string.md#substr-str-s-int-off-int-length-str)
* [Trim( str s, str cutset ) str](/stdlib/string.md#trim-str-s-str-cutset-str)
* [TrimLeft( str s, str cutset ) str](/stdlib/string.md#trimleft-str-s-str-cutset-str)
* [TrimRight( str s, str cutset ) str](/stdlib/string.md#trimright-str-s-str-cutset-str)
* [TrimSpace( str s ) str](/stdlib/string.md#trimspace-str-s-str)
* [Upper( str s ) string](/stdlib/string.md#upper-str-s-str)

## Операторы

| Оператор             | Результат | Описание                                                                                                       |
| -------------------- | --------- | -------------------------------------------------------------------------------------------------------------- |
| str **+** str        | str       | Слияние двух строк.                                                                                            |
| **\*** str           | int       | Получить длину строки.                                                                                         |
| str **?**            | bool      | Вызов *bool(str)*.                                                                                             |
| **\|** str           | str       | Этот унарный оператор удаляет пробельные символы в начале, в конце строки и рядом с символами перевода строки. |
| str **==** str       | bool      | Возвращает *true* если две строки равны и *false*, в противном случае.                                         |
| str **>** str        | bool      | Возвращает *true* если первая строка больше второй и *false*, в противном случае.                              |
| str **<** str        | bool      | Возвращает *true* если первая строка меньше второй и *false*, в противном случае.                              |
| str **!=** str       | bool      | Возвращает *true* если две строки не равны и *false*, в противном случае.                                      |
| str **>=** str       | bool      | Возвращает *true* если первая строка больше или равна второй и *false*, в противном случае.                    |
| str **<=** str       | bool      | Возвращает *true* если первая строка меньше или равна второй и *false*, в противном случае.                    |
| str **=** str        | str       | Присваивание строки.                                                                                           |
| str **=** int        | str       | Конвертирует целое число в строку и присваивает её переменной.                                                 |
| str **=** bool       | str       | Присваивает переменной "true" или "false".                                                                     |
| str **+=** str       | str       | Добавляет к строковой переменной строку.                                                                       |
| str **\[** int **]** | int       | Установить/получить уникодный символ по индексу.                                                               |

## Функции

### bool(str s) bool

Функция *bool* возвращает *false*, если строка пустая, равна "0" или "false", в противном случае, возвращается *true*.

### float(str s) float

Функция *float* преобразует строку в число типа *float*. Если строка имеет неверный формат, то возвращается ошибка.

### int(str s) int

Функция *int* преобразует строку в число типа *int*. Если строка имеет неверный формат, то возвращается ошибка.

### Find(str s, str substr) int

Функция *Find* возвращает смещение первого вхождения подстроки *substr* в строке *s*, или -1, если *substr* отсутствует в строке *s*.

### Format(str s, anytype args...) str

Функция *Format* форматирует строку в соответствии со спецификатором *s* и возвращает результирующую строку. Имеются следующие управляющие команды:

#### Общие

* **%v** - значение в формате по умолчанию
* **%%** - знак процента&#x20;

#### bool

* **%t** -    слово true или false

#### int

* **%b** - по основанию 2
* **%c** - соответствующий символ Unicode
* **%d** - по основанию 10. Это формат по умолчанию для *int*.
* **%o** - по основанию 8
* **%x** - по основанию 16, с нижним регистром a-f
* **%X** - по основанию 16, с верхним регистром A-F
* **%U** - формат    Unicode: U+1234

#### float

* **%e** - научная запись, например -1.234456e+78
* **%E** - научная запись, например -1.234456E+78
* **%f** - десятичная точка без экспоненты, например 123.456. Вы можете указать общую ширину и мантиссу *%\[width].\[precision]f* - *%8.2f, %.3f, %7f*.
* **%g** - %e для большой экспоненты, и %f в противном случае. Это формат по умолчанию для *float*.

#### str

* **%s** - формат по умолчанию для строк.
* **%x** - по основанию 16 в нижнем регистре, два символа на 1 байт.
* **%X** - по основанию 16 в верхнем регистре, два символа на 1 байт.

Вы можете указать i-ый аргумент в форматируемой строке подобно этому - *Format("%d %\[1]d %\[1]d", 10)*

```
arr.int mya = {1,2,3}
time t
Format(`%s %v %v %g %6.2[4]f`, `ok`, mya, Now(t), 99.0 + 1.)
```

### HasPrefix(str s, str prefix) bool

Функция *HasPrefix* возвращает *true*, если строка *s* начинается со строки *prefix*.

### HasSuffix(str s, str suffix) bool

Функция *HasSuffix* возвращает *true*, если строка *s* заканчивается строкой *suffix*.

### Left(str s, int i) str

Функция *Left* возвращает подстроку из первых *i* символов строки *s*.

### Lines(str s) arr.str

Функция *Lines* разбивает строку *s* на подстроки по символам перевода строки. Все подстроки добавляются в возвращаемый массив строк.

### Lower(str s) str

Функция *Lower* приводит копию строки *s* к нижнему регистру и возвращает её.

### Repeat(str s, int count) str

Функция *Repeat* возвращает новую строку состоящую из *count* повторений строки *s*.

### Replace(str s, str old, str new) str

Функция *Replace* возвращает копию строки *s* со всеми подстроками *old* замененными на строку *new*.

### Right(str s, int i) str

Функция *Right* возвращает подстроку из последних *i* символов строки *s*.

### Size(int size, str format) str

Функция *Size* возвращает округленный размер в виде строки. В параметре *format* укажите шаблон вывода для десятичного числа с плавающей точкой и строки. Если *format* равен пустой строке, то используется формат *%.2f%s*.

```go
Print( Size(956348901, `%.1f %s `) + Size(62, `%[2]s%.2[1]f `) + Size(123789, ``))
// 912.0 MB B62 120.89KB
```

### Split(str s, str sep) arr.str

Функция *Split* разбивает строку *s* на подстроки разделенные строкой *sep*. Все подстроки добавляются в возвращаемый массив строк.

### Substr(str s, int off, int length) str

Функция *Substr* возвращает подстроку *s* с указанным смещением и длиной.

### Trim(str s, str cutset) str

Функция *Trim* возвращает подстроку строки *s* с удалёнными начальными и конечными символами, которые содержатся в строке *cutset*.

### TrimLeft(str s, str cutset) str

Функция *TrimLeft* возвращает подстроку строки *s* с удалёнными начальными символами, которые содержатся в строке *cutset*.

### TrimRight(str s, str cutset) str

Функция *TrimRight* возвращает подстроку строки *s* с удалёнными конечными символами, которые содержатся в строке *cutset*.

### TrimSpace(str s) str

Функция *TrimSpace* возвращает подстроку строки *s* с удалёнными начальными и конечными пробельными символами.

### Upper(str s) str

Функция *Upper* приводит копию строки *s* к верхнему регистру и возвращает её.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://ru.gentee.org/stdlib/string.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
