One-liner pour transformer [] int en chaîne
Fondamentalement, je n'ai []int{1, 2, 3}
je veux un one-liner qui transforme ce dans la chaîne de caractères "1, 2, 3" (j'ai besoin de le délimiteur à être personnalisées, parfois .
parfois ,
etc). Ci-dessous est le meilleur que je pouvais venir. Des recherches en ligne et ne semble pas trouver une meilleure réponse.
Dans la plupart des langues, il y a un support intégré pour cela, par exemple:
python:
> A = [1, 2, 3]
> ", ".join([str(a) for a in A])
'1, 2, 3'
aller:
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, ", "))
}
Il doit sûrement y avoir un utilitaire enterré en ce qui me permet de le faire avec un one-liner?
Je sais qu'il y a strings.Join(A, ", ")
mais qui ne fonctionne que si Un est déjà []chaîne.
source d'informationauteur N0thing
Vous devez vous connecter pour publier un commentaire.
Pour convertir
A := []int{1, 2, 3, 4, 5, 6, 7, 8, 9}
à une ligne de chaîne délimitée comme
"1,2,3,4,5,6,7,8,9"
utilisation:
ou:
ou:
et de le retourner à partir d'une fonction comme dans cet exemple:
Pour inclure un espace après la virgule que vous pourriez appeler
arrayToString(A, ", ")
ou, à l'inverse de définir le retour commereturn strings.Trim(strings.Replace(fmt.Sprint(a), " ", delim + " ", -1), "[]")
à la force de son insertion, après le séparateur.Je viens de lancer dans le même problème aujourd'hui, puisque je n'ai pas trouvé quoi que ce soit sur la bibliothèque standard, j'ai recompilé 3 façons de faire cette conversion
Créer une chaîne et en ajoutant les valeurs du tableau par la conversion à l'aide de strconv.Ltid:
Créer un []chaîne, convertir chaque tableau de la valeur, et de renvoyer un joint de chaîne à partir de []chaîne:
Convertir [], int à une chaîne et remplacer /garniture de la valeur:
La Performance est tout à fait différent en fonction de la mise en œuvre:
Personnellement, je vais aller avec IntToString2, de sorte que la fonction finale pourrait être un paquet util dans mon projet comme ceci:
Je crois que vous pouvez aller avec le
fmt.Sprint
famille de fonctions. Je ne suis pas expert en aller de mise en forme de drapeaux, et peut-être vous pouvez le faire avec juste unSprintf
mais ici, c'est un one-liner qui fonctionne:En général, vous pouvez utiliser
strings.Replace
à venir avec différents séparateurs (aussi longtemps que vous pouvez sans problème remplacer le,
oule séparateur par défaut):
Vous pouvez toujours
json.Marshal
: