Connecting Tech Pros Worldwide Forums | Help | Site Map

Regex.Split... Can I do this??

Jordi Rico
Guest
 
Posts: n/a
#1: Oct 16 '06
Hi,

I know I can split a string into an array doing this:

Dim s As String()=Regex.Split("One-Two-Three","-")

So I would have:

s(0)="One"
s(1)="Two"
s(2)="Three"

The problem is, I am receiving some kind of data this way:

"*One#*Two#*Three#", it is, every word starts with "*" and ends with
"#"...

Is there any way of using Regex to split it like the previous example??

Thanks in advance


Ron Weiner
Guest
 
Posts: n/a
#2: Oct 16 '06

re: Regex.Split... Can I do this??


How about
strIn = replace(strIn,"*","")
Dim s As String()=Regex.Split(strIn,"#")
--
Ron W
www.WorksRite.com
"Jordi Rico" <jordirico@gmail.comwrote in message
news:1161005330.270951.227920@i42g2000cwa.googlegr oups.com...
Quote:
Hi,
>
I know I can split a string into an array doing this:
>
Dim s As String()=Regex.Split("One-Two-Three","-")
>
So I would have:
>
s(0)="One"
s(1)="Two"
s(2)="Three"
>
The problem is, I am receiving some kind of data this way:
>
"*One#*Two#*Three#", it is, every word starts with "*" and ends with
"#"...
>
Is there any way of using Regex to split it like the previous example??
>
Thanks in advance
>

Jordi Rico
Guest
 
Posts: n/a
#3: Oct 16 '06

re: Regex.Split... Can I do this??


No, 'cos it would give a result like this:

s(0)="One"
s(1)=""
s(2)="Two"
s(3)=""
s(4)="Three"

But thanks anyway


Ron Weiner ha escrito:
Quote:
How about
strIn = replace(strIn,"*","")
Dim s As String()=Regex.Split(strIn,"#")
--
Ron W
www.WorksRite.com
"Jordi Rico" <jordirico@gmail.comwrote in message
news:1161005330.270951.227920@i42g2000cwa.googlegr oups.com...
Quote:
Hi,

I know I can split a string into an array doing this:

Dim s As String()=Regex.Split("One-Two-Three","-")

So I would have:

s(0)="One"
s(1)="Two"
s(2)="Three"

The problem is, I am receiving some kind of data this way:

"*One#*Two#*Three#", it is, every word starts with "*" and ends with
"#"...

Is there any way of using Regex to split it like the previous example??

Thanks in advance
Jeff Dillon
Guest
 
Posts: n/a
#4: Oct 16 '06

re: Regex.Split... Can I do this??


Actually his solution works. You have ONE blank array entry at the end, but
you could safely ignore that one.

Jeff
"Jordi Rico" <jordirico@gmail.comwrote in message
news:1161020552.983779.144580@m73g2000cwd.googlegr oups.com...
Quote:
No, 'cos it would give a result like this:
>
s(0)="One"
s(1)=""
s(2)="Two"
s(3)=""
s(4)="Three"
>
But thanks anyway
>
>
Ron Weiner ha escrito:
>
Quote:
>How about
> strIn = replace(strIn,"*","")
> Dim s As String()=Regex.Split(strIn,"#")
>--
>Ron W
>www.WorksRite.com
>"Jordi Rico" <jordirico@gmail.comwrote in message
>news:1161005330.270951.227920@i42g2000cwa.googleg roups.com...
Quote:
Hi,
>
I know I can split a string into an array doing this:
>
Dim s As String()=Regex.Split("One-Two-Three","-")
>
So I would have:
>
s(0)="One"
s(1)="Two"
s(2)="Three"
>
The problem is, I am receiving some kind of data this way:
>
"*One#*Two#*Three#", it is, every word starts with "*" and ends with
"#"...
>
Is there any way of using Regex to split it like the previous example??
>
Thanks in advance
>
>

Chris
Guest
 
Posts: n/a
#5: Oct 16 '06

re: Regex.Split... Can I do this??


Hi Jordi,

I know this isn't as straightforward as Regex.Split(), but it does exactly
what you want.

Begin code:
===================================
imports Microsoft.VisualBasic
imports System
imports system.Text.RegularExpressions
imports System.Collections

public module MyModule
Sub Main()
Dim myItems as New ArrayList
myItems = getValues("*One#*Two#*Three#")

For each item as string in myItems
Console.WriteLine( item & VbCrLf)
next

Console.ReadLine()
end sub

'Here is where the real work gets done
Function getValues(ByVal Input As String) As ArrayList
Dim RegexObj As String = "\*(?<ValueIwant>.+?)\#"
Dim options As RegexOptions = RegexOptions.None
Dim matches As MatchCollection = Regex.Matches(Input, RegexObj,
options)
Dim myMatchArray As New ArrayList

For Each foundItem As Match In matches
myMatchArray.Add(foundItem.Groups("ValueIwant").Va lue)
Next

'You could skip the above loop and access
'found items directly. For example:
'matches.Item(i).Groups("ValueIwant").Value
'Where i is an integer >= 0

Return myMatchArray
End Function

end module
===================================
End Code.

I don't think that using the Split function is the way to go here because
you have two possible characters to match. You could use an expression like:
(\*\#|\*) but I don't know if that would confuse the Split function. You can
try.

I hope this helped.

Chris


"Jordi Rico" <jordirico@gmail.comwrote in message
news:1161005330.270951.227920@i42g2000cwa.googlegr oups.com...
Quote:
Hi,
>
I know I can split a string into an array doing this:
>
Dim s As String()=Regex.Split("One-Two-Three","-")
>
So I would have:
>
s(0)="One"
s(1)="Two"
s(2)="Three"
>
The problem is, I am receiving some kind of data this way:
>
"*One#*Two#*Three#", it is, every word starts with "*" and ends with
"#"...
>
Is there any way of using Regex to split it like the previous example??
>
Thanks in advance
>

Jordi Rico
Guest
 
Posts: n/a
#6: Oct 17 '06

re: Regex.Split... Can I do this??


Thanks a lot Chris, in fact that's the solution I could find searching
everywhere!
I'm absolutely new in the world of Regex, and, although it's really
hard, it is going to be very useful for our new project, as I have to
parse a lot of diferent incoming messages... so now I'm going to study
the basis of these methods...


Chris ha escrito:
Quote:
Hi Jordi,
>
I know this isn't as straightforward as Regex.Split(), but it does exactly
what you want.
>
Begin code:
===================================
imports Microsoft.VisualBasic
imports System
imports system.Text.RegularExpressions
imports System.Collections
>
public module MyModule
Sub Main()
Dim myItems as New ArrayList
myItems = getValues("*One#*Two#*Three#")
>
For each item as string in myItems
Console.WriteLine( item & VbCrLf)
next
>
Console.ReadLine()
end sub
>
'Here is where the real work gets done
Function getValues(ByVal Input As String) As ArrayList
Dim RegexObj As String = "\*(?<ValueIwant>.+?)\#"
Dim options As RegexOptions = RegexOptions.None
Dim matches As MatchCollection = Regex.Matches(Input, RegexObj,
options)
Dim myMatchArray As New ArrayList
>
For Each foundItem As Match In matches
myMatchArray.Add(foundItem.Groups("ValueIwant").Va lue)
Next
>
'You could skip the above loop and access
'found items directly. For example:
'matches.Item(i).Groups("ValueIwant").Value
'Where i is an integer >= 0
>
Return myMatchArray
End Function
>
end module
===================================
End Code.
>
I don't think that using the Split function is the way to go here because
you have two possible characters to match. You could use an expression like:
(\*\#|\*) but I don't know if that would confuse the Split function. You can
try.
>
I hope this helped.
>
Chris
>
>
"Jordi Rico" <jordirico@gmail.comwrote in message
news:1161005330.270951.227920@i42g2000cwa.googlegr oups.com...
Quote:
Hi,

I know I can split a string into an array doing this:

Dim s As String()=Regex.Split("One-Two-Three","-")

So I would have:

s(0)="One"
s(1)="Two"
s(2)="Three"

The problem is, I am receiving some kind of data this way:

"*One#*Two#*Three#", it is, every word starts with "*" and ends with
"#"...

Is there any way of using Regex to split it like the previous example??

Thanks in advance
Jeff Dillon
Guest
 
Posts: n/a
#7: Oct 17 '06

re: Regex.Split... Can I do this??


The first solution is easier, and works

Dim sTest As String = "*One-*Two-*Three-"

sTest = sTest.Replace("*", "")

Dim s As String() = Regex.Split(sTest, "-")

Do your homework



"Jordi Rico" <jordirico@gmail.comwrote in message
news:1161078451.253492.220250@h48g2000cwc.googlegr oups.com...
Quote:
Thanks a lot Chris, in fact that's the solution I could find searching
everywhere!
I'm absolutely new in the world of Regex, and, although it's really
hard, it is going to be very useful for our new project, as I have to
parse a lot of diferent incoming messages... so now I'm going to study
the basis of these methods...
>
>
Chris ha escrito:
>
Quote:
>Hi Jordi,
>>
>I know this isn't as straightforward as Regex.Split(), but it does
>exactly
>what you want.
>>
>Begin code:
>===================================
>imports Microsoft.VisualBasic
>imports System
>imports system.Text.RegularExpressions
>imports System.Collections
>>
>public module MyModule
> Sub Main()
> Dim myItems as New ArrayList
> myItems = getValues("*One#*Two#*Three#")
>>
> For each item as string in myItems
> Console.WriteLine( item & VbCrLf)
> next
>>
> Console.ReadLine()
> end sub
>>
> 'Here is where the real work gets done
> Function getValues(ByVal Input As String) As ArrayList
> Dim RegexObj As String = "\*(?<ValueIwant>.+?)\#"
> Dim options As RegexOptions = RegexOptions.None
> Dim matches As MatchCollection = Regex.Matches(Input, RegexObj,
>options)
> Dim myMatchArray As New ArrayList
>>
> For Each foundItem As Match In matches
> myMatchArray.Add(foundItem.Groups("ValueIwant").Va lue)
> Next
>>
> 'You could skip the above loop and access
> 'found items directly. For example:
> 'matches.Item(i).Groups("ValueIwant").Value
> 'Where i is an integer >= 0
>>
> Return myMatchArray
> End Function
>>
>end module
>===================================
>End Code.
>>
>I don't think that using the Split function is the way to go here because
>you have two possible characters to match. You could use an expression
>like:
>(\*\#|\*) but I don't know if that would confuse the Split function. You
>can
>try.
>>
>I hope this helped.
>>
>Chris
>>
>>
>"Jordi Rico" <jordirico@gmail.comwrote in message
>news:1161005330.270951.227920@i42g2000cwa.googleg roups.com...
Quote:
Hi,
>
I know I can split a string into an array doing this:
>
Dim s As String()=Regex.Split("One-Two-Three","-")
>
So I would have:
>
s(0)="One"
s(1)="Two"
s(2)="Three"
>
The problem is, I am receiving some kind of data this way:
>
"*One#*Two#*Three#", it is, every word starts with "*" and ends with
"#"...
>
Is there any way of using Regex to split it like the previous example??
>
Thanks in advance
>
>

Branco Medeiros
Guest
 
Posts: n/a
#8: Oct 17 '06

re: Regex.Split... Can I do this??



Jordi Rico wrote (inline):
Quote:
I know I can split a string into an array doing this:
Dim s As String()=Regex.Split("One-Two-Three","-")
>
So I would have:
s(0)="One"
s(1)="Two"
s(2)="Three"
You don't need a regex to such a split. Use the string:

Dim S As String() = "One-Two-Three".Split("-"c)

Quote:
The problem is, I am receiving some kind of data this way:
"*One#*Two#*Three#", it is, every word starts with "*" and ends with
"#"...
Is there any way of using Regex to split it like the previous example??
Again, the String itself might do it:

Dim S As String() = "*One#*Two#*Three#".Split( _
New Char() {"*"c, "#"c}, _
System.StringSplitOptions.RemoveEmptyEntries)

HTH.

Regards,

Branco

Closed Thread


Similar Visual Basic .NET bytes