Fonction strfind
Posted: 05 Sep 2006, 09:10
C'est encore moi
En utilisant l'action mouvement du curseur avec click gauche et ensuite action touche "ctrl + c", j'ai mis une chaîne de caractères dans le presse papier.
J'ai ensuite recopié ce texte dans une variable, et j'aimerais bien découper la chaîne pour n'en récupérer qu'une partie.
La chaîne ressemble à ceci : "aaa bbb ccc ddd".
La valeur à récupérer se trouve entre le 2ème et le 3ème espace ("ccc").
Il y a actuellement moyen de récupérer cette valeur, mais je trouve que c'est lourd à implémenter.
1) dans varstr : mettre le contenu du presse papier -> "aaa bbb ccc ddd"
2) dans varpos1 : mettre la position du premier espace qui se trouve dans varstr (via strfind) -> 4
3) dans varpos2 : mettre la longueur de varstr -> 15
4) dans varstr : placer le substring de varstr à partir de varpos1 + 1 jusque varpos2 -> "bbb ccc ddd"
5) dans varpos1 : mettre la position du premier espace qui se trouve dans varstr -> 4
6) dans varstr : placer le substring de varstr à partir de varpos1 + 1 jusque varpos2 -> "ccc ddd"
7) dans varpos1 : mettre la position du premier espace qui se trouve dans varstr
8 ) dans varstr : placer le substring de varstr à partir de la position 1 jusque varpos1 - 1 -> "ccc"
Ca va encore, mais si la valeur que je souhaite récupérer se trouve après le 10ème espace, à ce moment j'aurais sans doute fait une boucle pour alléger le code (le temps d'exécution n'étant pas allégé pour la cause).
N'y aurait-il pas plutôt moyen d'ajouter une nouvelle fonction ou alors d'ajouter un paramètre à la fonction strfind pour lui demander de chercher la xème occurence d'une chaîne de caractères (par défaut ce serait la première occurence)?
De cette façon :
1) dans varstr : mettre le contenu du presse papier -> "aaa bbb ccc ddd"
2) dans varpos1 : mettre la position du 2ème espace qui se trouve dans varstr -> 8
3) dans varpos2 : mettre la position du 3ème espace qui se trouve dans varstr -> 12
4) dans varstr : placer le substring de varstr à partir de varpos1 + 1 jusque varpos2 - 1 -> "ccc"
Et j'ai une autre petite question, dans l'exemple ci-dessus j'utilise le séparateur "caractère d'espacement", mais en réalité j'ai une tabulation. Est-ce que je peux indiquer \t ou qqch du style pour faire la recherche sur ce caractère?
Merci d'avance.
En utilisant l'action mouvement du curseur avec click gauche et ensuite action touche "ctrl + c", j'ai mis une chaîne de caractères dans le presse papier.
J'ai ensuite recopié ce texte dans une variable, et j'aimerais bien découper la chaîne pour n'en récupérer qu'une partie.
La chaîne ressemble à ceci : "aaa bbb ccc ddd".
La valeur à récupérer se trouve entre le 2ème et le 3ème espace ("ccc").
Il y a actuellement moyen de récupérer cette valeur, mais je trouve que c'est lourd à implémenter.
1) dans varstr : mettre le contenu du presse papier -> "aaa bbb ccc ddd"
2) dans varpos1 : mettre la position du premier espace qui se trouve dans varstr (via strfind) -> 4
3) dans varpos2 : mettre la longueur de varstr -> 15
4) dans varstr : placer le substring de varstr à partir de varpos1 + 1 jusque varpos2 -> "bbb ccc ddd"
5) dans varpos1 : mettre la position du premier espace qui se trouve dans varstr -> 4
6) dans varstr : placer le substring de varstr à partir de varpos1 + 1 jusque varpos2 -> "ccc ddd"
7) dans varpos1 : mettre la position du premier espace qui se trouve dans varstr
8 ) dans varstr : placer le substring de varstr à partir de la position 1 jusque varpos1 - 1 -> "ccc"
Ca va encore, mais si la valeur que je souhaite récupérer se trouve après le 10ème espace, à ce moment j'aurais sans doute fait une boucle pour alléger le code (le temps d'exécution n'étant pas allégé pour la cause).
N'y aurait-il pas plutôt moyen d'ajouter une nouvelle fonction ou alors d'ajouter un paramètre à la fonction strfind pour lui demander de chercher la xème occurence d'une chaîne de caractères (par défaut ce serait la première occurence)?
De cette façon :
1) dans varstr : mettre le contenu du presse papier -> "aaa bbb ccc ddd"
2) dans varpos1 : mettre la position du 2ème espace qui se trouve dans varstr -> 8
3) dans varpos2 : mettre la position du 3ème espace qui se trouve dans varstr -> 12
4) dans varstr : placer le substring de varstr à partir de varpos1 + 1 jusque varpos2 - 1 -> "ccc"
Et j'ai une autre petite question, dans l'exemple ci-dessus j'utilise le séparateur "caractère d'espacement", mais en réalité j'ai une tabulation. Est-ce que je peux indiquer \t ou qqch du style pour faire la recherche sur ce caractère?
Merci d'avance.