ligo/gitlab-pages/docs/language-basics/strings.md

151 lines
2.6 KiB
Markdown
Raw Normal View History

---
id: strings
title: Strings
---
import Syntax from '@theme/Syntax';
Strings are defined using the built-in `string` type like this:
<Syntax syntax="pascaligo">
```
2020-02-05 19:28:40 +04:00
const a : string = "Hello Alice"
```
</Syntax>
<Syntax syntax="cameligo">
```
2020-02-05 19:28:40 +04:00
let a : string = "Hello Alice"
```
</Syntax>
<Syntax syntax="reasonligo">
```reasonligo
2020-02-05 19:28:40 +04:00
let a : string = "Hello Alice";
2019-12-11 13:34:08 +04:00
```
</Syntax>
2020-02-10 22:07:20 +04:00
## Concatenating Strings
<Syntax syntax="pascaligo">
2019-12-11 13:34:08 +04:00
Strings can be concatenated using the `^` operator.
2020-02-12 01:29:12 +04:00
```pascaligo group=a
2020-02-05 19:28:40 +04:00
const name : string = "Alice"
const greeting : string = "Hello"
const full_greeting : string = greeting ^ " " ^ name
```
</Syntax>
<Syntax syntax="cameligo">
2019-12-11 13:34:08 +04:00
Strings can be concatenated using the `^` operator.
2020-02-12 01:29:12 +04:00
```cameligo group=a
2020-02-05 19:28:40 +04:00
let name : string = "Alice"
let greeting : string = "Hello"
let full_greeting : string = greeting ^ " " ^ name
```
</Syntax>
<Syntax syntax="reasonligo">
2019-12-11 13:34:08 +04:00
Strings can be concatenated using the `++` operator.
2020-02-12 01:29:12 +04:00
```reasonligo group=a
2020-02-05 19:28:40 +04:00
let name : string = "Alice";
let greeting : string = "Hello";
let full_greeting : string = greeting ++ " " ++ name;
2019-12-10 17:47:31 +04:00
```
</Syntax>
2020-03-17 19:05:03 +04:00
## Extracting Subtrings
2020-03-17 19:05:03 +04:00
Substrings can be extracted using the predefined function
`String.sub`. The first character has index 0 and the interval of
indices for the substring has inclusive bounds.
<Syntax syntax="pascaligo">
2020-02-12 01:29:12 +04:00
```pascaligo group=b
2020-02-05 19:28:40 +04:00
const name : string = "Alice"
2020-03-17 19:05:03 +04:00
const slice : string = String.sub (0n, 1n, name)
```
> Note that `string_slide` is *deprecated*.
</Syntax>
<Syntax syntax="cameligo">
2020-02-12 01:29:12 +04:00
```cameligo group=b
2020-02-05 19:28:40 +04:00
let name : string = "Alice"
2020-03-17 19:05:03 +04:00
let slice : string = String.sub 0n 1n name
```
2020-03-17 19:05:03 +04:00
> Note that `String.slice` is *deprecated*.
</Syntax>
<Syntax syntax="reasonligo">
2020-02-12 01:29:12 +04:00
```reasonligo group=b
2020-02-05 19:28:40 +04:00
let name : string = "Alice";
2020-03-17 19:05:03 +04:00
let slice : string = String.sub (0n, 1n, name);
2019-12-10 17:47:31 +04:00
```
2020-03-17 19:05:03 +04:00
> Note that `String.slice` is *deprecated*.
</Syntax>
> ⚠️ Notice that the offset and length of the slice are natural
> numbers.
2020-02-10 22:07:20 +04:00
## Length of Strings
2020-02-05 19:28:40 +04:00
The length of a string can be found using a built-in function:
<Syntax syntax="pascaligo">
2020-02-12 01:29:12 +04:00
```pascaligo group=c
2020-02-05 19:28:40 +04:00
const name : string = "Alice"
const length : nat = String.length (name) // length = 5
```
2020-03-17 19:05:03 +04:00
> Note that `size` is *deprecated*.
</Syntax>
<Syntax syntax="cameligo">
2020-02-12 01:29:12 +04:00
```cameligo group=c
2020-02-05 19:28:40 +04:00
let name : string = "Alice"
2020-03-17 19:05:03 +04:00
let length : nat = String.length name // length = 5
```
2020-03-17 19:05:03 +04:00
> Note that `String.size` is *deprecated*.
</Syntax>
<Syntax syntax="reasonligo">
2020-02-12 01:29:12 +04:00
```reasonligo group=c
2020-02-05 19:28:40 +04:00
let name : string = "Alice";
2020-03-17 19:05:03 +04:00
let length : nat = String.length (name); // length == 5
2019-12-10 17:47:31 +04:00
```
2020-03-17 19:05:03 +04:00
> Note that `String.size` is *deprecated*.
</Syntax>