Convert string to Numeric in VB.net 2003 ?

E

engteng

How do I convert string to numeric in VB.NET 2003 ?

Example convert P50001 to 50001 or 50001P to 50001 but if P is in middle
then not convert.

Regards,

Tee
 
K

kimiraikkonen

How do I convert string to numeric in VB.NET 2003 ?

Example convert P50001 to 50001 or 50001P to 50001 but if P is in middle
then not convert.

Regards,

Tee

In my idea, first you should remove P by taking only numeric part
using substring function, then you're ready to cast it to Integer or
Long using CInt or CLng depending on the range as follows:

' For P50001
Dim num1 As String = "P50001"
num1 = num1.Substring(1)
'Proove that 50001 is now an Int32
MsgBox(num1 & " is " & _
CInt(num1).GetType.Name.ToString)

' For 50001P
Dim num2 As String = "50001P"
num2 = num2.Substring(0, 5)
MsgBox(num2 & " is " & _
CInt(num2).GetType.Name.ToString)

'.........

Hope this helps,

Onur Güzel
 
L

Lorenz Hölscher

Hello Tee,

if the "P" always is the single first or last character you could
write something like:

___________________________________________
dim strX as string
dim dblValue as Short

strX="P50001"
if LCase(Left(strX,1))="p" then
dblvalue = val(mid(strX,2))
elseif LCase(Right(strX,1))="p" then
dblvalue = val(left(strX,Len(strX)-1))
else
dblvalue = 0
end if
___________________________________________

If the character may vary you could change the code into something
like:

___________________________________________
if Not IsNumeric(LCase(Left(strX,1))) then
___________________________________________


(I didn't check it with the debugger so I hope it's free of errors)

Good luck,
Lorenz
 
B

Bill McCarthy

Hi Lorenz,

Generally it is better to use a string comparison method than convert
strings to lower case or upper case for the purpose of a case insensitive
match, eg:

If s.StartsWith("P", StringComparison.CurrentCultureIgnoreCase) Then
s = s.Substring(1)
ElseIf s.EndsWith("P", StringComparison.CurrentCultureIgnoreCase) Then
s = s.Substring(0, s.Length - 1)
End If

value = CInt(s)
 
L

Lorenz Hölscher

Hi Bill,

you're right for sure. As you might have seen I usually work with
Office-VBA with no SubString-Method und its IgnoreCase-Parameter until
now...

bye, Lorenz
 
K

kimiraikkonen

Tee,

dim Example as string = "P50001p".tolower.Trim("p")

http://msdn.microsoft.com/en-us/library/d4tt83f9.aspx

Cor

"engteng" <[email protected]> schreef in bericht




- Show quoted text -

Why are you trying to lower P? OP just wants to convert "P50001 to
50001" or "50001P to 50001". Plus, trimming 'P' is not enough alone,
also the string type must be converted to a numeric type such as
Integer for further usage. In this case, it's proper to take the part
of the string value that can be casted to Integer using CInt or
Convert.ToInt32 etc. (without 'P').

Thanks,

Onur G.
 
C

Cor Ligthert[MVP]

Onur,

The first I agree, it is converting the P in the middle as well, to lower.

But how can you convert a string with a P in the middle to a what you call a
numeric?

That can only by those who call a string with all numeric characters a
numeric, and therefore I did not extend the code for that part.

(By the way, I have tried the code, with that what you did, you can do the
same, as you then set a simple Cint before it, you can use it as any real
numeric value instead of a string, however this can in my idea never been
done in the way the Op was asking).

Cor

"kimiraikkonen" <[email protected]> schreef in bericht
Tee,

dim Example as string = "P50001p".tolower.Trim("p")

http://msdn.microsoft.com/en-us/library/d4tt83f9.aspx

Cor

"engteng" <[email protected]> schreef in
bericht




- Show quoted text -

Why are you trying to lower P? OP just wants to convert "P50001 to
50001" or "50001P to 50001". Plus, trimming 'P' is not enough alone,
also the string type must be converted to a numeric type such as
Integer for further usage. In this case, it's proper to take the part
of the string value that can be casted to Integer using CInt or
Convert.ToInt32 etc. (without 'P').

Thanks,

Onur G.
 
K

Kevin S Gallagher

How about using regular expressions
Dim SomeValue As String = "P500P01"
Dim SomeNumber As Integer = 0
Dim objRegEx As New Regex("[p]")
SomeNumber = CInt(objRegEx.Replace(SomeValue.ToLower, ""))
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top