# Using Strings and Numbers

Julia has excellent support for strings. In this section we’ll just go about the basics of defining, concatenating strings, and converting numbers to strings.

As usual, if you are looking for a full reference and advanced topics, check out the official documentation, in this case the Strings reference.

## Strings and Chars

One basic distinction is that Julia contains two relevant data types: `string`

and `char`

. Strings are initialized with `"`

while chars use `'`

.

```
"Hello" # string
'H' # char
'Hello' # error!! character literal contains multiple characters
```

## Concatenate Strings

There are at least two ways to concatenate strings in Julia: you can use the `*`

operator and the `string`

function.

```
"Hello " * "wor" * "ld"
string("Hello", " ", "world")
```

both options will return the string `"Hello world"`

## Convert Number to String

There are various ways of converting a number to a string:

- using the
`string`

function. - using string interpolation.
- using the classic C-style
`Printf`

package to format the output.

Let’s see what we obtain if we apply this to the number `1/7`

:

```
string(1/7) # Returns "0.14285714285714285".
"$(1/7)" # Returns "0.14285714285714285".
`@sprintf("%6.4f",1/7)` # Returns `"0.1429"`
```

## Concatenate a number to a string

Now let’s check out a few examples of both string concatenation, and number-to-string conversion.

### Using the string function

The simplest way is to use the `string`

function

```
string("In ancient Babylon they approximated pi to 25/8, which is ", 25/8)
```

```
"In ancient Babylon they approximated pi to 25/8, which is 3.125"
```

### Using string interpolation

We can obtain the same result using “string interpolation”.

```
"In ancient Babylon they approximated pi to 25/8, which is $(25/8)"
```

With string interpolation, the expression between parenthesis we’ll be evaluated (which in this case returns a `Float`

), and then converted to a string.

As you can see, this notation is more compact than the `string`

function, while it’s still easy to read. It can be convenient when you need to do many concatenations, like when doing something like:

```
rmse = 1.5; mse = 1.1; R2 = 0.94
"Our model has a R^2 of $(R2), rmse of $(rmse), and mse of $(mse)"
```

```
"Our model has a R^2 of 0.94, rmse of 1.5, and mse of 1.1"
```

### Using the Printf package

In case you need to control the number of digits in the output, or use scientific notation, you can use the
classic, C-style, Printf package, which contains the `@sprintf`

macro that returns a string.

```
using Printf
str = @sprintf("Archimedes approximated pi to 22/7, which is %.4f...", 22/7)
```

```
"Archimedes approximated pi to 22/7, which is 3.1429..."
```

The package follows the C convention. Even though this can be hard to read and use, it is very powerful when we need precise control on the final format.

The cases which I tend to use most frequently are:

format | description | example |
---|---|---|

%.4f | 4 decimal digits | 100.1429 |

%.4e | Scientific notation with 4 digits | 1.4286e-05 |

You can check out more examples in the Julia documentation, or the full specification of the format in the C++ documentation