patterngoCritical
One-liner to transform []int into string
Viewed 0 times
linerinttransformstringoneinto
Problem
Basically I have
In most languages there is in-built support for this, e.g.:
python:
go:
Surely there must be an utility buried into go that allows me to do this with a one-liner?
I know that there is
[]int{1, 2, 3}, I want a one-liner that transforms this into the string "1, 2, 3" (I need the delimiter to be custom, sometimes ., sometimes ,, etc). Below is the best I could come up with. Searched online and did not seem to find a better answer.In most languages there is in-built support for this, e.g.:
python:
> A = [1, 2, 3]
> ", ".join([str(a) for a in A])
'1, 2, 3'go:
package main
import (
"bytes"
"fmt"
"strconv"
)
// Could not find a one-liner that does this :(.
func arrayToString(A []int, delim string) string {
var buffer bytes.Buffer
for i := 0; i < len(A); i++ {
buffer.WriteString(strconv.Itoa(A[i]))
if i != len(A)-1 {
buffer.WriteString(delim)
}
}
return buffer.String()
}
func main() {
A := []int{1, 2, 3}
fmt.Println(arrayToString(A, ", "))
}Surely there must be an utility buried into go that allows me to do this with a one-liner?
I know that there is
strings.Join(A, ", "), but that only works if A is already []string.Solution
To convert
to a one line delimited string like
"1,2,3,4,5,6,7,8,9"
use:
or:
or:
and return it from a function such as in this example:
To include a space after the comma you could call
A := []int{1, 2, 3, 4, 5, 6, 7, 8, 9}to a one line delimited string like
"1,2,3,4,5,6,7,8,9"
use:
strings.Trim(strings.Join(strings.Fields(fmt.Sprint(A)), delim), "[]")or:
strings.Trim(strings.Join(strings.Split(fmt.Sprint(A), " "), delim), "[]")or:
strings.Trim(strings.Replace(fmt.Sprint(A), " ", delim, -1), "[]")and return it from a function such as in this example:
package main
import "fmt"
import "strings"
func arrayToString(a []int, delim string) string {
return strings.Trim(strings.Replace(fmt.Sprint(a), " ", delim, -1), "[]")
//return strings.Trim(strings.Join(strings.Split(fmt.Sprint(a), " "), delim), "[]")
//return strings.Trim(strings.Join(strings.Fields(fmt.Sprint(a)), delim), "[]")
}
func main() {
A := []int{1, 2, 3, 4, 5, 6, 7, 8, 9}
fmt.Println(arrayToString(A, ",")) //1,2,3,4,5,6,7,8,9
}To include a space after the comma you could call
arrayToString(A, ", ") or conversely define the return as return strings.Trim(strings.Replace(fmt.Sprint(a), " ", delim + " ", -1), "[]") to force its insertion after the delimiter.Code Snippets
strings.Trim(strings.Join(strings.Fields(fmt.Sprint(A)), delim), "[]")strings.Trim(strings.Join(strings.Split(fmt.Sprint(A), " "), delim), "[]")strings.Trim(strings.Replace(fmt.Sprint(A), " ", delim, -1), "[]")package main
import "fmt"
import "strings"
func arrayToString(a []int, delim string) string {
return strings.Trim(strings.Replace(fmt.Sprint(a), " ", delim, -1), "[]")
//return strings.Trim(strings.Join(strings.Split(fmt.Sprint(a), " "), delim), "[]")
//return strings.Trim(strings.Join(strings.Fields(fmt.Sprint(a)), delim), "[]")
}
func main() {
A := []int{1, 2, 3, 4, 5, 6, 7, 8, 9}
fmt.Println(arrayToString(A, ",")) //1,2,3,4,5,6,7,8,9
}Context
Stack Overflow Q#37532255, score: 182
Revisions (0)
No revisions yet.