2011-01-11 8 views
3

Comment supprimer des caractères d'une chaîne? Par exemple, j'ai une chaîne appelée «année», que je veux changer de 4 caractères à 2 caractères. Il est défini comme ceci:Fortran: supprimer des caractères d'une chaîne

character(4) :: year = "2011"

Comment puis-je tronquer la chaîne à 2 caractères, de sorte qu'au lieu de year = "2011", il est year = "11"?

Répondre

2

Vous pouvez en effet utiliser year(3:4); Toutefois, votre chaîne comportera toujours quatre caractères, c'est-à-dire qu'elle contiendra vos deux chiffres et deux espaces. Pour illustrer cela, voici un exemple:

program trunc 
    character(len=4) :: year = "2011" 

    write(*,'(A,A,A)') '..', year, '..' 
    year = year(3:4) 
    write(*,'(A,A,A)') '..', year, '..' 
end program trunc 

Cette imprime

..2011.. 
..11 .. 

Pour vraiment "11" au lieu de "11 " vous devez affecter la valeur à une variable qui peut contenir deux caractères seulement.

+0

pour se débarrasser de la fuite et les blancs, vous pouvez utiliser la garniture (adjustl (string)) –

+0

@Zhenya C'est en partie vrai. Si vous utilisez 'trim' vous ne supprimez pas les espaces vides, vous n'affichez/traitez que les caractères non vides. Si vous savez combien de temps la partie «intéressante» de votre chaîne est, vous pouvez également accéder simplement à la sous-chaîne pertinente. Mais comme l'OP a demandé de régler la variable à "11" exactement, j'ai supposé qu'il ne voulait pas que les blancs restent. – canavanin

+0

En effet, vous avez raison, trim (str) ne change pas la longueur d'une chaîne. C'est peut-être une question de goût, mais personnellement, je préfère garder toutes les cordes d'une grande longueur fixe, comme le caractère * 99, de sorte que je n'ai pas à me souvenir de la longueur exacte de chaque corde. –

0

Je pense qu'il est year(3:4) mais ne me citez pas là-dessus;)

0

Utilisez la commande suivante:

trim(year(3:4)) 
+1

De l'exemple dans la question, 'year (3: 4)' est l'expression de longueur de 2 caractères ''11'' et' trim (year (3: 4)) 'est exactement la même chose. Dans des cas plus généraux, il peut s'agir d'un caractère de longueur 1 ou de longueur 0. Donc, cela ne semble pas répondre à la question. Enfin, comment voulez-vous que cette expression soit utilisée? 'year = trim (année (3: 4))' laisse toujours 'year' comme une variable de longueur de 4 caractères et le' trim' n'a aucun effet. – francescalus

Questions connexes