---
title: "String"
source: standard-library
version: genesis-0-1-0
id: standard-library/4-plugins/string
canonical: /docs/standard-library/4-plugins/string
---

# String

The string plugin exposes common string manipulation operations through Simorg vibrations. Each key maps to a dedicated string action function. Valid inputs produce a value and invalid inputs result in no vibration.

## Functions

---

## append

Concatenates array of strings.

```
("a","b","c")  string.append ? // "abc"
```

Non-string array members result in no vibration.

```
("a",1)  string.append ? // no vibration
```

- **Type:** ERROR
- **Code:** INVALID_ARGUMENT_TYPE
- **Message:** append expects all arguments to be strings.

---

## at

Returns character at index.

```
("hello",1)  string.at ? // "e"
```

Non-numeric index results in no vibration.

```
("hello","1")  string.at ? // no vibration
```

- **Type:** ERROR
- **Code:** INVALID_INDEX_TYPE
- **Message:** at expects a numeric index.

---

## format

Replaces {} placeholders with provided values.

```
("hello {}", "world")  string.format ? // "hello world"
```

Placeholder/value count mismatch results in no vibration.

```
("{} {}", "x")  string.format ? // no vibration
```

- **Type:** ERROR
- **Code:** FORMAT_ARG_MISMATCH
- **Message:** Number of placeholders must match argument count.

---

## back

Returns last character of a string.

```
"abc"  string.back ? // "c"
```

Non-string input results in no vibration.

```
12  string.back ? // no vibration
```

- **Type:** ERROR
- **Code:** INVALID_ARGUMENT_TYPE
- **Message:** back expects a string.

---

## erase

Erases count chars starting at index.

```
("abcdef",2,2)  string.erase ? // "abef"
```

Invalid index types result in no vibration.

```
("abcdef","2",2)  string.erase ? // no vibration
```

- **Type:** ERROR
- **Code:** INVALID_INDEX_TYPE
- **Message:** erase expects numeric index and count.

---

## front

Returns first character of a string.

```
"abc"  string.front ? // "a"
```

Non-string input results in no vibration.

```
true  string.front ? // no vibration
```

- **Type:** ERROR
- **Code:** INVALID_ARGUMENT_TYPE
- **Message:** front expects a string.

---

## insert

Inserts string at index.

```
("ac","b",1)  string.insert ? // "abc"
```

Invalid index type results in no vibration.

```
("ac","b","1")  string.insert ? // no vibration
```

- **Type:** ERROR
- **Code:** INVALID_INDEX_TYPE
- **Message:** insert expects numeric position.

---

## popBack

Removes last character.

```
"abc"  string.popBack ? // "ab"
```

Non-string input results in no vibration.

```
0  string.popBack ? // no vibration
```

- **Type:** ERROR
- **Code:** INVALID_ARGUMENT_TYPE
- **Message:** popBack expects a string.

---

## pushBack

Appends one character from second arg.

```
("ab","c")  string.pushBack ? // "abc"
```

Non-string args result in no vibration.

```
("ab",3)  string.pushBack ? // no vibration
```

- **Type:** ERROR
- **Code:** INVALID_ARGUMENT_TYPE
- **Message:** pushBack expects string and character string.

---

## replace

Replaces a substring at index with new string.

```
("hello","y",1,1)  string.replace ? // "hyllo"
```

Invalid numeric args result in no vibration.

```
("hello","y","1",1)  string.replace ? // no vibration
```

- **Type:** ERROR
- **Code:** INVALID_INDEX_TYPE
- **Message:** replace expects numeric position and length.

---

## substr

Returns substring with start and length.

```
("hello",1,3)  string.substr ? // "ell"
```

Invalid index args result in no vibration.

```
("hello",1,"3")  string.substr ? // no vibration
```

- **Type:** ERROR
- **Code:** INVALID_INDEX_TYPE
- **Message:** substr expects numeric start and length.

---

## compare

Lexicographically compares two strings.

```
("a","b")  string.compare ? // -1
```

Non-string args result in no vibration.

```
("a",1)  string.compare ? // no vibration
```

- **Type:** ERROR
- **Code:** INVALID_ARGUMENT_TYPE
- **Message:** compare expects two strings.

---

## empty

Checks whether string is empty.

```
""  string.empty ? // true
```

Non-string input results in no vibration.

```
11  string.empty ? // no vibration
```

- **Type:** ERROR
- **Code:** INVALID_ARGUMENT_TYPE
- **Message:** empty expects a string.

---

## length

Returns string length.

```
"hello"  string.length ? // 5
```

Non-string input results in no vibration.

```
12  string.length ? // no vibration
```

- **Type:** ERROR
- **Code:** INVALID_ARGUMENT_TYPE
- **Message:** length expects a string.
