> For the complete documentation index, see [llms.txt](https://ru.gentee.org/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://ru.gentee.org/stdlib/string.md).

# Строки

Здесь описаны операторы и функции для работы со строками (тип **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* к верхнему регистру и возвращает её.
