VB / VB.NET : RENVOYER CE QU'IL Y A AVANT UNE STRING, APRES UNE STRING OU ENTRE

Signaler
Messages postés
466
Date d'inscription
samedi 16 février 2002
Statut
Membre
Dernière intervention
20 avril 2007
-
Messages postés
97
Date d'inscription
vendredi 22 octobre 1999
Statut
Membre
Dernière intervention
13 juin 2016
-
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/4886-vb-vb-net-renvoyer-ce-qu-il-y-a-avant-une-string-apres-une-string-ou-entre-deux-strings-dans-une-string

Messages postés
97
Date d'inscription
vendredi 22 octobre 1999
Statut
Membre
Dernière intervention
13 juin 2016
1
Juste pour essayer de mettre tout le mon de d'accord et faire un bon copier/coller pour ceux que cela intéressera :

Function strBefore(ByVal thisStr As String, ByVal inThiStr As String) As String
strBefore = vbNullString

Try
strBefore = Left(inThiStr, InStr(inThiStr, thisStr) - 1)

Catch Err As Exception
Call MsgBox("Unable to get before String: " & thisStr & vbCrlf & Err.Message)

End Try
End Function

Function strAfter(ByVal thisStr As String, ByVal inThiStr As String) As String
strAfter = vbNullString

Try
strAfter = Right(inThiStr, Len(inThiStr) - InStr(inThiStr, thisStr) - Len(thisStr) + 1)

Catch Err As Exception
Call MsgBox("Unable to get after String: " & thisStr & vbCrlf & Err.Message)

End Try
End Function

Function strBetween(ByVal thisStr As String, ByVal thisSecondStr As String, ByVal inThiStr As String) As String
strBetween = vbNullString

Try
strBetween = strAfter(thisStr, strBefore(thisSecondStr, inThiStr))

Catch Err As Exception
Call MsgBox("Unable to get between String: " & thisStr & " - " & thisSecondStr & vbCrlf & Err.Message)

End Try
End Function
Messages postés
939
Date d'inscription
vendredi 25 octobre 2002
Statut
Membre
Dernière intervention
27 janvier 2009
2
C'est vrai que j'aurais pu utiliser left et right, mais bon, je laisse comme tel, comme ca il y a deux exemples sur une meme page.
Sinon j'ai pas le reflexe d'utiliser mes fonctions dans d'autres fonctions, mais ca aurait été bien plus rapide à écrire pour la fonction entre deux strings c vrai... enfin bon, au moins c'est clair, et on est pas obligé de declarer les 3 si on veux utiliser que la derniere (je cherchais une excuses :) )
Merci du comment'
Messages postés
466
Date d'inscription
samedi 16 février 2002
Statut
Membre
Dernière intervention
20 avril 2007

Pratique en effet pour des begineurs, mais un peu lourd !
Tiens, voici une critique constructive, car je propose ceci pour y palier :

Function Avant(ByVal CetteStr As String, ByVal DansCetteStr As String) As String
Avant = Left(DansCetteStr, InStr(DansCetteStr, CetteStr) - 1)
End Function

Function Apres(ByVal CetteStr As String, ByVal DansCetteStr As String) As String
Apres = Right(DansCetteStr, Len(DansCetteStr) - InStr(DansCetteStr, CetteStr) - Len(CetteStr) + 1)
End Function

Function Entre(ByVal CetteStr As String, ByVal EtCetteStr As String, ByVal DansCetteStr As String) As String
Entre = Apres(CetteStr, Avant(EtCetteStr, DansCetteStr))
End Function

Pareille, mais en 1 ligne par fonction, SAUF SAUF SAUF que toi, tu as gérés les erreurs possibles, alors que ceci ne le fait pas...
Un plus pour un moins ou vice-versa quoi... ;)
(je propose ceci car en générale il s'agit de découper une chaine type formattée spécialement, donc normalement ces fonctions devraient convenir...)
Tchao @+