Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

extraire une chaine de caractères

4 réponses
Avatar
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

4 réponses

Avatar
François Picalausa
On 5月12日, 午後2:00, rico34 s.microsoft.com> wrote:
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
Avatar
Patrice Henrio
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" a écrit dans le message de news:

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



Avatar
Jean-marc
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/
Avatar
LE TROLL
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" a écrit dans le message de news:

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