Work with strings
A string type represents a sequence of characters. Strings are immutable and cannot be modified once created.
Type name: string
String syntax
A string literal is represented by a sequence of characters enclosed in double quotes ("
).
Any character may appear inside a string literal except an unescaped double quote.
String literals support several escape sequences
and hex encoding using \x
as a prefix.
"abc"
"string with double \" quote"
"string with backslash \\"
"日本語"
"\xe6\x97\xa5\xe6\x9c\xac\xe8\xaa\x9e"
Convert data types to strings
Use the string()
function to convert
other basic types to strings:
- boolean
- bytes
- duration
- float
- int
- uint
- time
string(v: 42)
// Returns "42"
Convert regular expressions to strings
To convert a regular expression to a string:
- Import the
regexp
package. - Use
regexp.getString()
and provide the regular expression to convert to a string.
import "regexp"
regexp.getString(r: /[a-zA-Z]/)
// Returns [a-zA-Z] (string)
Convert data types to hexadecimal strings
To convert basic types to hexadecimal strings:
- Import the
contrib/bonitoo-io/hex
package. - Use
hex.string()
to convert other a value to a hexadecimal string.
import "contrib/bonitoo-io/hex"
hex.string(v: 123456)
// Returns 1e240
Convert columns to strings
Flux lets you iterate over rows in a stream of tables and convert columns to strings.
To convert the _value
column to strings,
use the toString()
function.
toString()
only operates on the _value
column.
data
|> toString()
Given the following input data:
_time | _value (int) |
---|---|
2021-01-01T00:00:00Z | 1 |
2021-01-01T02:00:00Z | 2 |
2021-01-01T03:00:00Z | 3 |
2021-01-01T04:00:00Z | 4 |
The example above returns:
_time | _value (string) |
---|---|
2021-01-01T00:00:00Z | 1 |
2021-01-01T02:00:00Z | 2 |
2021-01-01T03:00:00Z | 3 |
2021-01-01T04:00:00Z | 4 |
To convert any column to strings:
data
|> map(fn: (r) => ({ r with level: string(v: r.level) }))
Given the following input data:
_time | level (int) |
---|---|
2021-01-01T00:00:00Z | 1 |
2021-01-01T02:00:00Z | 2 |
2021-01-01T03:00:00Z | 3 |
2021-01-01T04:00:00Z | 4 |
The example above returns:
_time | level (string) |
---|---|
2021-01-01T00:00:00Z | 1 |
2021-01-01T02:00:00Z | 2 |
2021-01-01T03:00:00Z | 3 |
2021-01-01T04:00:00Z | 4 |
Operate on strings
Use functions in the Flux strings package to perform operations including:
- Compare two strings
- Replace substrings in a string
- Return the length of a string
- Split a string into an array
- Join an array into a string
- and more
Interpolate strings
To interpolate strings in another Flux string, enclose embedded expressions
in a dollar sign and curly braces ${}
.
Flux replaces the placeholder with the result of the embedded expression and
returns a string literal.
name = "John"
"My name is ${name}."
// My name is John.
d = 1m
"the answer is ${d}"
// the answer is 1m
t0 = 2016-06-13T17:43:50Z
"the answer is ${t0}"
// the answer is 2016-06-13T17:43:50.000000000Z
p = {name: "John", age: 42}
"My name is ${p.name} and I'm ${p.age} years old."
// My name is John and I'm 42 years old.
String interpolation expressions must satisfy the Stringable constraint.
Concatenate strings
To concatenate Flux strings, use the +
operator between string values or
expressions that resolve to strings.
Flux resolves expressions and returns a single concatenated string.
Concatenated expressions must resolve to strings.
name = "John"
"My name is " + name + "."
// My name is John.
d = 1m
"the answer is " + string(v: d)
// the answer is 1m
t0 = 2016-06-13T17:43:50Z
"the answer is " + string(v: t0)
// the answer is 2016-06-13T17:43:50.000000000Z
p = {name: "John", age: 42}
"My name is " + p.name + " and I'm " + string(v: p.age) + " years old."
// My name is John and I'm 42 years old.
Was this page helpful?
Thank you for your feedback!
Support and feedback
Thank you for being part of our community! We welcome and encourage your feedback and bug reports for Flux and this documentation. To find support, use the following resources:
Customers with an annual or support contract can contact InfluxData Support.