TCL - scinde une chaîne en nombre arbitraire d'espaces pour une liste
Dire que j'ai une chaîne comme celle-ci:
set str "AAA B C DFG 142 56"
Maintenant je veux obtenir une liste comme suit:
{AAA B C DFG 142 56}
Pour cela je veux utiliser la fonction split, mais dans ce cas, je vous vide les listes de {}. Comment je peux obtenir la liste ci-dessus?
OriginalL'auteur Narek | 2011-04-20
Vous devez vous connecter pour publier un commentaire.
Voir ceci: Scinder une Chaîne En Mots.
regexp
pourrait revenir une liste. Je l'aurais fait cela, ce qui est presque aussi bon[split [regsub { {2,}} $string " "] " "]
. Le regsub remplace toutes les séquences d'espaces de longueur 2 ou plus, avec un seul espace, puis le split se divise sur que.définir la liste de mots [regexp -inline -tout -- {\S+} $texte] ici, ce n'"--"?
Narek, -- marque la fin de commutateurs.
C'est nécessaire dans le cas où la regex commence avec un caractère" -", et en plus c'est juste une bonne habitude à prendre (pour cela, en plus des nombreuses commandes Tcl où le premier non-switch argument peut être peut-être l'entrée utilisateur:
file delete -- $file
,switch -exact -- $word
, ...)BTW voir stackoverflow.com/questions/3369458/... et hume.com/html84/mann/regexp.html pour tous, et en ligne de drapeaux.
OriginalL'auteur ba__friend
Vous pouvez toujours faire ce qui suit:
Il sera de sortie suivants:
Chaîne de caractères, une liste, de son tous la même chose (techniquement). La sortie qui a été donné, peut facilement être divisé en plusieurs éléments d'une liste, etc. Vous souhaitez que votre sortie à une liste bien, ne est-ce pas?
Cela fonctionne parce que l'entrée peut être analysée comme une liste valide. A l'entrée d'été "AAA }B C DFG 142 56", il ne pourrait pas parce que ça ne peut pas être interprétée comme une liste.
OriginalL'auteur Scott
La textutil::split module de tcllib a un
splitx
proc qui fait exactement ce que vous voulezOriginalL'auteur glenn jackman
De Tcl 8.5, les suivantes aussi des oeuvres
(à condition que la chaîne est également une bonne liste, comme dans la question). La sortie est la liste de votre choix.
De la Documentation:
liste,
{*} (syntaxe)
OriginalL'auteur Peter Lewerin