469,085 Members | 1,042 Online
Bytes | Developer Community
New Post

Home Posts Topics Members FAQ

Post your question to a community of 469,085 developers. It's quick & easy.

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

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

Oct 16 '06 #1
7 1992
How about
strIn = replace(strIn,"*","")
Dim s As String()=Regex.Split(strIn,"#")
--
Ron W
www.WorksRite.com
"Jordi Rico" <jo*******@gmail.comwrote in message
news:11**********************@i42g2000cwa.googlegr oups.com...
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

Oct 16 '06 #2
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:
How about
strIn = replace(strIn,"*","")
Dim s As String()=Regex.Split(strIn,"#")
--
Ron W
www.WorksRite.com
"Jordi Rico" <jo*******@gmail.comwrote in message
news:11**********************@i42g2000cwa.googlegr oups.com...
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
Oct 16 '06 #3
Actually his solution works. You have ONE blank array entry at the end, but
you could safely ignore that one.

Jeff
"Jordi Rico" <jo*******@gmail.comwrote in message
news:11**********************@m73g2000cwd.googlegr oups.com...
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:
>How about
strIn = replace(strIn,"*","")
Dim s As String()=Regex.Split(strIn,"#")
--
Ron W
www.WorksRite.com
"Jordi Rico" <jo*******@gmail.comwrote in message
news:11**********************@i42g2000cwa.googleg roups.com...
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

Oct 16 '06 #4
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" <jo*******@gmail.comwrote in message
news:11**********************@i42g2000cwa.googlegr oups.com...
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

Oct 16 '06 #5
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:
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" <jo*******@gmail.comwrote in message
news:11**********************@i42g2000cwa.googlegr oups.com...
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
Oct 17 '06 #6
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" <jo*******@gmail.comwrote in message
news:11**********************@h48g2000cwc.googlegr oups.com...
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:
>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" <jo*******@gmail.comwrote in message
news:11**********************@i42g2000cwa.googleg roups.com...
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

Oct 17 '06 #7

Jordi Rico wrote (inline):
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)

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

Oct 17 '06 #8

This discussion thread is closed

Replies have been disabled for this discussion.

Similar topics

4 posts views Thread by H | last post: by
3 posts views Thread by Michael D Murphy | last post: by
7 posts views Thread by lgbjr | last post: by
7 posts views Thread by =?Utf-8?B?amFj?= | last post: by
1 post views Thread by mad.scientist.jr | last post: by
reply views Thread by zhoujie | last post: by
By using this site, you agree to our Privacy Policy and Terms of Use.