Convert string to Numeric in VB.net 2003 ?

  • Thread starter Thread starter engteng
  • Start date Start date
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
 
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
 
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
 
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)
 
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
 
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.
 
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.
 
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, ""))
 
Back
Top