erkaMedlem sedan dec. 19996 522 inlägg Hej!
Om jag har en sträng som jag vill omvandla till integer med
Convert.ToInt32(myString), och vill kolla om det gick att konvertera den, tex skickar jag in "asdasdjasdjjasd" i myString så vill jag kunna se att den inte gick att konvertera till en integer.
Finns det någon sådan funktion inbyggd eller måste man hacka den själv och isåfall hur :)
Tacksam
erkaMedlem sedan dec. 19996 522 inlägg Löste det genom att köra en
If myString.GetType().ToString().Equals("System.Int32")
Någon som vet något annat sätt ?
erkaMedlem sedan dec. 19996 522 inlägg Nu har jag märkt att det inte fungerade som jag ville, jag vill ju kolla om det går att konvertera till integer, om det går ska jag göra en sak och om det inte går ska jag göra en annan sak. Någon som har mer koll ?
nikoMedlem sedan juni 20022 599 inlägg try
{
int myInt=Convert.ToInt32(myString);
}
catch(System.FormatException e)
{
//Inte ett tal.
}
catch(System.Exception e)
{
//Nåt helt annat gick åt skogen.
}
erkaMedlem sedan dec. 19996 522 inlägg Tack Niko, får det dock inte att fungera, någon som har det i vb.net kod :)
PaceMedlem sedan juni 20019 024 inlägg vb.net
try
Dim myInt As Integer = Convert.ToInt32(myString)
catch e As System.FormatException
' Inte ett tal.
catch e As System.Exception
' Nåt helt annat gick åt skogen.
end try
nikoMedlem sedan juni 20022 599 inlägg På begäran:
Try
myInt=Convert.ToInt32(myString)
Catch exp As System.FormatException
'Inte ett tal.
Catch exp As System.Exception
'Nåt helt annat gick åt skogen.
End Try
nikoMedlem sedan juni 20022 599 inlägg erkaMedlem sedan dec. 19996 522 inlägg Stort tack, om den innehåller en integer, hur kan jag få ut det då? Typ som en ifsats
Dim strString As String = "3"
Try
Dim myInt As Integer = Convert.ToInt32(strString)
Catch exp As System.FormatException
'Inte ett tal
Response.Redirect("InteEttTal.aspx")
Catch exp As System.Exception
'Ett tal
Response.Redirect("EttTal.aspx")
End Try
ni förstår vad jag menar
nikoMedlem sedan juni 20022 599 inlägg Dim strString As String = "3"
Try
Dim myInt As Integer = Convert.ToInt32(strString)
'Det [b]var[/b] ett tal vi fortsätter exekveringen här.
Catch exp As System.FormatException
'Inte var [b]inte[/b] ett tal vi vidtar åtgärder.
Catch exp As System.Exception
'Nåt helt annat gick åt skogen. Vi vidtar andra åtgärder.
End Try
Alternativt:
Dim strString As String = "3"
Dim DetVarEttTal As Boolean = false
Try
Dim myInt As Integer = Convert.ToInt32(strString)
DetVarEttTal = true
Catch exp As System.FormatException
Catch exp As System.Exception
End Try
if DetVarEttTal then
'Gör nåt.
else
'Gör nåt annat.
end if
PaceMedlem sedan juni 20019 024 inlägg Upptäckte själv samma problem med att kolla om en variabel var av önskad datatyp och stötte på problem så jag slängde ihop nedanstående (finns visserligen i Microsoft.VisualBasic, men det skadar inte att skräddarsy ;))
'***************************************
'
' DataType class
'
' Kontrollerar datatypen på parameteter och retunerar sant/falskt
' om den är som önskad. isString() kontrollerar exempelvis om strängen
' är en sträng, isString("wee") kommer då att reuntera sant.
'
'***************************************
Public Class DataType
' Kontrollerar om värdet är en sträng.
Public Shared Function isString(Value As Object) As Boolean
Return _CheckDataType(Value, "System.String")
End Function
' Kontrollerar om värdet är datum/tid.
Public Shared Function isDateTime(Value As Object) As Boolean
Return _CheckDataType(Value, "System.DateTime")
End Function
' Kontrollerar om värdet är någon form utav tal.
Public Shared Function isInteger(Value As Object) As Boolean
If _CheckDataType(Value, "System.Int16") Or _
_CheckDataType(Value, "System.Int32") Or _
_CheckDataType(Value, "System.Int64") _
Then
Return True
End If
End Function
' Kontrollerar om värdet är null.
Public Shared Function isNull(Value As Object) As Boolean
Try
Dim a = Value.GetType()
Return False
Catch
Return True
End Try
End Function
' Utför kontrollerna.
Private Shared Function _CheckDataType(Value As Object, DataType As String) As Boolean
Try
If Value.GetType().ToString() = DataType Then
Return True
Else
Return False
End If
Catch
Return False
End Try
End Function
End Class
Används på följande sätt:
If DataType.isString("wee") Then
' Det är en sträng.
End If
If DataType.isInteger(3473) Then
' Det är ett tal (int16, int32 eller int64).
End If
erkaMedlem sedan dec. 19996 522 inlägg Nice Pace, ska leka lite med den sen! Super
GrynetMedlem sedan maj 2001329 inlägg Bara ett helt annat sätt att kolla om en sträng är en integer.
Regex reg = new Regex(@"^[\d]{1,5}$");
if(!reg.Match("minsträngjaggvilllkolla").Success){
//fel meddelande
}