webForumDet fria alternativet

Kolla om det är en integer

.NET

15 svar · 383 visningar · startad av erka

Medlem sedan dec. 19996 522 inlägg
Frågan#1

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

Medlem sedan dec. 19996 522 inlägg
#2

Löste det genom att köra en

If myString.GetType().ToString().Equals("System.Int32")

Någon som vet något annat sätt ?

Medlem sedan dec. 19996 522 inlägg
#3

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 ?

Medlem sedan juni 20022 599 inlägg
#4
try
{
	int myInt=Convert.ToInt32(myString);
}
catch(System.FormatException e)
{
	//Inte ett tal.
}
catch(System.Exception e)
{
	//Nåt helt annat gick åt skogen.
}
Medlem sedan dec. 19996 522 inlägg
#5

Tack Niko, får det dock inte att fungera, någon som har det i vb.net kod :)

Medlem sedan juni 20001 257 inlägg
#6

typeof kanske?

Medlem sedan juni 20019 024 inlägg
#7

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
Medlem sedan juni 20022 599 inlägg
#8

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
Medlem sedan juni 20022 599 inlägg
#9

Kanske inte en så dum idé iaf http://www.webforum.nu/showthread.php?s=&threadid=62623? :q

Medlem sedan juni 20019 024 inlägg
#10

  :e

Medlem sedan dec. 19996 522 inlägg
#11

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

Medlem sedan juni 20022 599 inlägg
#12
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
Medlem sedan dec. 19996 522 inlägg
#13

Tack niko

Medlem sedan juni 20019 024 inlägg
#14

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
Medlem sedan dec. 19996 522 inlägg
#15

Nice Pace, ska leka lite med den sen! Super

Medlem sedan maj 2001329 inlägg
#16

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
}
257 ms totalt · 4 externa anrop · v20260731065814-full.e96017d9
122 ms — deklarationer (db)
0 ms — hämta statistik (cache)
132 ms — hämta tråd, inlägg och bilagor (db)
120 ms — ändringar (db)