extraire une chaine de caractères

Le
rico34
Bonjour,

Existe-il une fonction qui extrait une chaine de caractère de la manière
suivante.

extrait_cc ("bonjour", "n",0) retourne "bon"
extrait_cc ("bonjour", "n",1) retourne "jour"

Merci
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
François Picalausa
Le #15406991
On 5月12日, 午後2:00, rico34
Bonjour,

Existe-il une fonction qui extrait une chaine de caractère de la man ière
suivante.

extrait_cc ("bonjour", "n",0) retourne "bon"
extrait_cc ("bonjour", "n",1) retourne "jour"

Merci



Hello,

Tu peux le réaliser à l'aide de split (ou mid et instr).

split("bonjour","n")(0) => bo
split("bonjour","n")(1) => jour

En testant sur les bornes du tableau renvoyé par split, il est
possible d'ajouter le "n" pour le premier.
Par exemple:

Public Function GetPart(Text As String, Delimiter As String, Index As
Long) As String
Dim parts() As String

parts = Split(Text, Delimiter)

If LBound(parts) > UBound(parts) Then
GetPart = ""
ElseIf (Index >= LBound(parts) And Index < UBound(parts)) Then
GetPart = parts(Index) & Delimiter
ElseIf Index = UBound(parts) Then
GetPart = parts(UBound(parts))
Else
GetPart = ""
End If
End Function


François
Patrice Henrio
Le #15406981
non mais cela n'est pas très difficile à écrire

function extraire(byval CH as string, byVal Cherche as string, ByVal N as
long)
dim X as long
X=InStr(CH,Cherche)
If X=0 then
extraire=""
exit function
end If
If N=0 then
If X=1 then extraire="" else extraire=left(CH,X-1)
else
If X=len(CH)-len(Cherche)+1 then extraire="" else
extraire=mid(CH,X+len(Cherche))
end function


"rico34"
Bonjour,

Existe-il une fonction qui extrait une chaine de caractère de la manière
suivante.

extrait_cc ("bonjour", "n",0) retourne "bon"
extrait_cc ("bonjour", "n",1) retourne "jour"

Merci



Jean-marc
Le #15406951
rico34 wrote:
Bonjour,

Existe-il une fonction qui extrait une chaine de caractère de la
manière suivante.

extrait_cc ("bonjour", "n",0) retourne "bon"
extrait_cc ("bonjour", "n",1) retourne "jour"

Merci



Hello,

Petit complément:
La fonction de François fonctionne comme spécifiée mais n'a pas
d'excellentes performances (pour autant que ça ait une importance).

La fonction de Patrice ne compile pas (problème de end if) et une fois
le problème réglé, elle ne fonctionne pas comme spécifiée (par
exemple "bonjour", n, 0 retourne "bo" au lieu de "bon".

Voici ma version, qui reprend plus ou moins l'idée de Patrice, et qui
fonctionne comme spécifiée. Elle est environ 4,5 fois plus rapide que
la version de François (Split coute cher, les Ubound aussi et l'opérateur
de concaténation est notoirement très lent).

Function GetPart2(ByVal szText As String, _
ByVal szPattern As String, _
ByVal n As Long)
Dim p As Long

p = InStr(szText, szPattern)

If (n = 0) Or (p = 0) Then
GetPart2 = Left$(szText, p)
Else
GetPart2 = Mid$(szText, p + Len(szPattern))
End If
End Function

Bon week-end :-)

--
Jean-marc Noury (jean_marc_n2)
Microsoft MVP - Visual Basic
mailto: remove '_no_spam_' ;
FAQ VB: http://faq.vb.free.fr/
LE TROLL
Le #15406941
Bonjour,

C'est quoi le but du jeu, de séparer les syllabes d'un mot ?

--
Merci beaucoup, au revoir et à bientôt :o)
------
Romans, logiciels, email, site personnel
http://irolog.free.fr/joe.htm
------------------------------------------------------------------------------------
"rico34"
Bonjour,

Existe-il une fonction qui extrait une chaine de caractère de la manière
suivante.

extrait_cc ("bonjour", "n",0) retourne "bon"
extrait_cc ("bonjour", "n",1) retourne "jour"

Merci



Publicité
Poster une réponse
Anonyme