2010-07-26 5 views
0

J'utilise l'instruction switch pour faire correspondre certaines options auxquelles des valeurs sont associées ou non, puis extraire les valeurs (ce que j'imagine n'être rien ou juste un tas de chaînes vides).Dans Tcl, les espaces sont-ils égaux à Chaîne vide?

En Tcl sont-ils équivalents? C'est à dire. Est-ce que l'espace blanc arrière sera alimenté en option ou analysé? Dois-je "couper la chaîne" la valeur ou est-ce inutile?

**

+0

Prenez soin de donner un exemple de ce dont vous parlez? –

+0

Le paquet 'cmdline' de tcllib vous serait-il utile? http://tcllib.sourceforge.net/doc/cmdline.html –

Répondre

3

Par défaut, les espaces n'est pas rognée depuis le début ou la fin de toutes les chaînes. Après tout, cela peut parfois être significatif. Si vous ne voulez dépouiller les espaces avant et, utilisez:

set str [string trim $str] 

Vous pouvez simplement dépouiller l'espace de tête ou l'espace de fuite en utilisant respectivement string trimleft et string trimright.

2

Dans Tcl, les espaces sont-ils égaux à string?

L'espace vide n'est pas égal à une chaîne vide. En utilisant TCL 8.5.2, l'expression expr {"" eq " "} est évaluée à 0.

l'espace blanc de fin sera-t-il alimenté en tant qu'option ou éliminé?

Si vous acceptez les chaînes telles quelles et n'effectuez aucun traitement sur celles-ci, vous obtiendrez tous les espaces présents.

Dois-je "couper la chaîne" la valeur ou est cela inutile?

La réponse à cette question dépend de votre application. Si l'espace n'est pas significatif, éliminez-le en utilisant la commande strim trim (comme mentionné dans Donal Fellows). Cela simplifiera probablement votre logique. Vous pouvez également utiliser regsub -all {\s+} $input_string { } pour réduire tous les caractères d'espaces répétés à l'intérieur d'une chaîne.

Questions connexes