# String Fields and Functions

Strings have multiple built-in functions you can use.

```
  let length: Int
```

Returns the number of characters in the string as an integer.

```
    let example = "hello"

    // Find the number of elements of the string.
    let length = example.length
    // `length` is `5`
```

\-

```
  fun concat(_ other: String): String
```

Concatenates the string `other` to the end of the original string, but does not modify the original string. This function creates a new string whose length is the sum of the lengths of the string the function is called on and the string given as a parameter.

```
    let example = "hello"
    let new = "world"

    // Concatenate the new string onto the example string and return the new string.
    let helloWorld = example.concat(new)
    // `helloWorld` is now `"helloworld"`
```

\-

```
  fun slice(from: Int, upTo: Int): String
```

Returns a string slice of the characters in the given string from start index `from` up to, but not including, the end index `upTo`. This function creates a new string whose length is `upTo - from`. It does not modify the original string. If either of the parameters are out of the bounds of the string, the function will fail.

```
    let example = "helloworld"

    // Create a new slice of part of the original string.
    let slice = example.slice(from: 3, upTo: 6)
    // `slice` is now `"lowo"`

    // Run-time error: Out of bounds index, the program aborts.
    let outOfBounds = example.slice(from: 2, upTo: 10)
```

\-

```
  fun decodeHex(): [UInt8]
```

Returns an array containing the bytes represented by the given hexadecimal string.

The given string must only contain hexadecimal characters and must have an even length. If the string is malformed, the program aborts

```
    let example = "436164656e636521"

    example.decodeHex()  // is `[67, 97, 100, 101, 110, 99, 101, 33]`
```


---

# 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://max-daunarovich.gitbook.io/flow-network/introduction/values-and-types/strings-and-characters/string-fields-and-functions.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.
