# Broadcasting string $variable

**URL:** <https://discourse.julialang.org/t/broadcasting-string-variable/93488>\
**Category:** General Usage\
**Tags:** strings, broadcast, broadcasting\
**Created:** [January 25, 2023, 3:33am UTC](https://discourse.julialang.org/t/broadcasting-string-variable/93488 "2023-01-25T03:33:34Z")\
**Posts on this page:** 13\
**Page:** 1

<div class="post-metadata">

**Author:** ![Lincoln\_Hannah](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/lincoln_hannah/32/19198_2.png) [@Lincoln\_Hannah](https://discourse.julialang.org/u/Lincoln_Hannah)\
**Post date:** [January 25, 2023, 3:33am UTC](https://discourse.julialang.org/t/broadcasting-string-variable/93488/1 "2023-01-25T03:33:35Z")

</div>

Is it possible to do something like this:

```julia
."X$(1:3)"

```

and get

```julia
@_ "X$_".(1:3) = ["X1","X2","X3"]

```

That is, can a vector variable within a string (via $) create a vector of strings. One for each element.

---

<div class="post-metadata">

**Author:** ![mkitti](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mkitti/32/12459_2.png) [@mkitti](https://discourse.julialang.org/u/mkitti)\
**Post date:** [January 25, 2023, 3:45am UTC](https://discourse.julialang.org/t/broadcasting-string-variable/93488/2 "2023-01-25T03:45:58Z")

</div>

This is the closest I can get.

```julia
julia> "X" .* string.(1:3)
3-element Vector{String}:
 "X1"
 "X2"
 "X3"

julia> ["X$x" for x in 1:3]
3-element Vector{String}:
 "X1"
 "X2"
 "X3"

```

---

<div class="post-metadata">

**Author:** ![adienes](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/adienes/32/37459_2.png) [@adienes](https://discourse.julialang.org/u/adienes)\
**Post date:** [January 25, 2023, 3:47am UTC](https://discourse.julialang.org/t/broadcasting-string-variable/93488/3 "2023-01-25T03:47:54Z")

</div>

You can try my `KeywordStrings` 🙂 [GitHub - adienes/KeywordStrings.jl: Flexible and convenient string formatting for the Julia language](https://github.com/adienes/KeywordStrings.jl/)

I made this just last weekend exactly for this and similar purposes

```julia
kw"X$ix" .% [(;ix) for ix ∈ 1:3]

```

---

<div class="post-metadata">

**Author:** ![odow](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/odow/32/28685_2.png) [@odow](https://discourse.julialang.org/u/odow)\
**Post date:** [January 25, 2023, 3:48am UTC](https://discourse.julialang.org/t/broadcasting-string-variable/93488/4 "2023-01-25T03:48:09Z")

</div>

The closest is

```julia
julia> map(i->"X$i", 1:3)
3-element Vector{String}:
 "X1"
 "X2"
 "X3"

```

If you don’t need the `$`, you can use:

```julia
julia> string.("x", 1:3)
3-element Vector{String}:
 "x1"
 "x2"
 "x3"

julia> string.("x", 1:3, "y")
3-element Vector{String}:
 "x1y"
 "x2y"
 "x3y"

```

---

<div class="post-metadata">

**Author:** ![Lincoln\_Hannah](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/lincoln_hannah/32/19198_2.png) [@Lincoln\_Hannah](https://discourse.julialang.org/u/Lincoln_Hannah)\
**Post date:** [January 25, 2023, 4:05am UTC](https://discourse.julialang.org/t/broadcasting-string-variable/93488/5 "2023-01-25T04:05:49Z")

</div>

Thanks everyone. this is probably my favourite `string.("X", 1:3)`

---

<div class="post-metadata">

**Author:** ![abraunst](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/abraunst/32/6880_2.png) [@abraunst](https://discourse.julialang.org/u/abraunst)\
**Post date:** [January 25, 2023, 6:35am UTC](https://discourse.julialang.org/t/broadcasting-string-variable/93488/6 "2023-01-25T06:35:19Z")

</div>

This looks close:

```julia
(i->"X$i").(1:3)

```

---

<div class="post-metadata">

**Author:** ![uniment](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/uniment/32/24532_2.png) [@uniment](https://discourse.julialang.org/u/uniment)\
**Post date:** [January 25, 2023, 6:48am UTC](https://discourse.julialang.org/t/broadcasting-string-variable/93488/7 "2023-01-25T06:48:16Z")

</div>

Note that `"X$i"` is merely syntax sugar which lowers to `string("X", i)`.

---

<div class="post-metadata">

**Author:** ![rafael.guerra](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/rafael.guerra/32/216610_2.png) [@rafael.guerra](https://discourse.julialang.org/u/rafael.guerra)\
**Post date:** [January 25, 2023, 10:12am UTC](https://discourse.julialang.org/t/broadcasting-string-variable/93488/8 "2023-01-25T10:12:38Z")

</div>

Linking [similar thread](https://discourse.julialang.org/t/broadcasting-string-interpolation/78025/3).

---

<div class="post-metadata">

**Author:** ![Lincoln\_Hannah](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/lincoln_hannah/32/19198_2.png) [@Lincoln\_Hannah](https://discourse.julialang.org/u/Lincoln_Hannah)\
**Post date:** [January 27, 2023, 1:18am UTC](https://discourse.julialang.org/t/broadcasting-string-variable/93488/9 "2023-01-27T01:18:38Z")

</div>

What if conversion of `"X$i"` to `string("X", i )` happened before applying the `@.` macro.

Then you could write `@."X$i"`

Currently this doesn’t work. I guess the `@.` macro is applied first and not finding any functions, the statement reduces to “X$i”

---

<div class="post-metadata">

**Author:** ![rocco\_sprmnt21](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/rocco_sprmnt21/32/20127_2.png) [@rocco\_sprmnt21](https://discourse.julialang.org/u/rocco_sprmnt21)\
**Post date:** [January 27, 2023, 11:10am UTC](https://discourse.julialang.org/t/broadcasting-string-variable/93488/10 "2023-01-27T11:10:33Z")

</div>

```julia
'x' .* Char.(48 .+ (1:3))

```

---

<div class="post-metadata">

**Author:** ![Dan](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/dan/32/42581_2.png) [@Dan](https://discourse.julialang.org/u/Dan)\
**Post date:** [January 27, 2023, 11:17am UTC](https://discourse.julialang.org/t/broadcasting-string-variable/93488/11 "2023-01-27T11:17:58Z")

</div>

```julia
names(DataFrame(zeros(3)', :auto))

```

😛

---

<div class="post-metadata">

**Author:** ![DNF](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/dnf/32/10191_2.png) [@DNF](https://discourse.julialang.org/u/DNF)\
**Post date:** [January 27, 2023, 11:46am UTC](https://discourse.julialang.org/t/broadcasting-string-variable/93488/12 "2023-01-27T11:46:34Z")

</div>

> [@rocco\_sprmnt21](#):
>
> `'x' .* Char.(48 .+ (1:3))`

```julia
'x' .* ('0' .+ (1:3))

```

(Or just `'x' .* ('1':'3')`)

---

<div class="post-metadata">

**Author:** ![rocco\_sprmnt21](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/rocco_sprmnt21/32/20127_2.png) [@rocco\_sprmnt21](https://discourse.julialang.org/u/rocco_sprmnt21)\
**Post date:** [January 27, 2023, 5:36pm UTC](https://discourse.julialang.org/t/broadcasting-string-variable/93488/13 "2023-01-27T17:36:05Z")

</div>

> [@DNF](#):
>
> Or just `'x' .* ('1':'3')`

this should close the search 😀.  
If the cost function of the expression was the number of pixels 😄, that would be even better than what the OP asked for.

```julia
."X$(1:3)"

```
