FOR THE WIZARD... get part of string.

User avatar
sal21
PlatinumLounger
Posts: 4353
Joined: 26 Apr 2010, 17:36

FOR THE WIZARD... get part of string.

Post by sal21 »

i can have i MyVar

+1-242-BAHAMAS-(BS).gif
+1-869-SAINT KITTS AND NEVIS-(KN).gif
+591-BOLIVIA-(BO).gif
+39-ITALY-(IT).gif
....
ecc

In effect variuos states have a phone code and sub phone code, else for example, Italy have only a code phone

i need to get the name of state

Note:
the part of (XX).gif if fixed for all

User avatar
HansV
Administrator
Posts: 78416
Joined: 16 Jan 2010, 00:14
Status: Microsoft MVP
Location: Wageningen, The Netherlands

Re: FOR THE WIZARD... get part of string.

Post by HansV »

Mid(MyVar, InStr(MyVar, "(") + 1, InStr(MyVar, ")") - InStr(MyVar, "(") - 1)
Best wishes,
Hans

User avatar
sal21
PlatinumLounger
Posts: 4353
Joined: 26 Apr 2010, 17:36

Re: FOR THE WIZARD... get part of string.

Post by sal21 »

HansV wrote:
11 Feb 2022, 12:40
Mid(MyVar, InStr(MyVar, "(") + 1, InStr(MyVar, ")") - InStr(MyVar, "(") - 1)
hummm...
for myvar="+1-242-BAHAMAS-(BS).gif"

have (BS)

i need BAHAMAS

User avatar
HansV
Administrator
Posts: 78416
Joined: 16 Jan 2010, 00:14
Status: Microsoft MVP
Location: Wageningen, The Netherlands

Re: FOR THE WIZARD... get part of string.

Post by HansV »

Sorry, I misinterpreted your question.

Code: Select all

    Dim p As Long, q As Long
    p = InStrRev(MyVar, "-")
    q = InStrRev(MyVar, "-", p - 1)
    MsgBox Mid(MyVar, q + 1, p - q - 1)
or

Code: Select all

    Dim v As Variant
    v = Split(MyVar, "-")
    MsgBox v(UBound(v) - 1)
Best wishes,
Hans

User avatar
sal21
PlatinumLounger
Posts: 4353
Joined: 26 Apr 2010, 17:36

Re: FOR THE WIZARD... get part of string.

Post by sal21 »

HansV wrote:
11 Feb 2022, 13:07
Sorry, I misinterpreted your question.

Code: Select all

    Dim p As Long, q As Long
    p = InStrRev(MyVar, "-")
    q = InStrRev(MyVar, "-", p - 1)
    MsgBox Mid(MyVar, q + 1, p - q - 1)
or

Code: Select all

    Dim v As Variant
    v = Split(MyVar, "-")
    MsgBox v(UBound(v) - 1)
G R E A T!
Tks bro.

User avatar
SpeakEasy
4StarLounger
Posts: 544
Joined: 27 Jun 2021, 10:46

Re: FOR THE WIZARD... get part of string.

Post by SpeakEasy »

Might be an entertaining time to introduce regular expressions ...

e,g.

Code: Select all

    With CreateObject("vbscript.regexp") 
        .Pattern = "\b([^\d\W])+\b"
        MsgBox .Execute(MyVar)(0)
    End With

User avatar
sal21
PlatinumLounger
Posts: 4353
Joined: 26 Apr 2010, 17:36

Re: FOR THE WIZARD... get part of string.

Post by sal21 »

SpeakEasy wrote:
11 Feb 2022, 16:09
Might be an entertaining time to introduce regular expressions ...

e,g.

Code: Select all

    With CreateObject("vbscript.regexp") 
        .Pattern = "\b([^\d\W])+\b"
        MsgBox .Execute(MyVar)(0)
    End With
nice, tks

but... i can use the same method to get the phone code from:

i can have i MyVar

+1-242-BAHAMAS-(BS).gif
+1-869-SAINT KITTS AND NEVIS-(KN).gif
+591-BOLIVIA-(BO).gif
+39-ITALY-(IT).gif
....
ecc

and i need:

vaphone="+1-242"
vaphone="+1-869"
vaphone="+591"
vaphone="+39"

...ecc

User avatar
SpeakEasy
4StarLounger
Posts: 544
Joined: 27 Jun 2021, 10:46

Re: FOR THE WIZARD... get part of string.

Post by SpeakEasy »

Code: Select all

With CreateObject("vbscript.regexp") 
	.Pattern = "\+([\d-]+)-"
	MsgBox .Execute(MyVar)(0).SubMatches(0)
End With

User avatar
sal21
PlatinumLounger
Posts: 4353
Joined: 26 Apr 2010, 17:36

Re: FOR THE WIZARD... get part of string.

Post by sal21 »

SpeakEasy wrote:
11 Feb 2022, 18:10

Code: Select all

With CreateObject("vbscript.regexp") 
	.Pattern = "\+([\d-]+)-"
	MsgBox .Execute(MyVar)(0).SubMatches(0)
End With
Great!
Never used regex, very powerful!