webForumDet fria alternativet

Kolla om det är en integer

.NETur .NET

15 svar · 383 visningar · startad av erka

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

erkaMedlem 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 ?

erkaMedlem 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 ?

nikoMedlem 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.
}
erkaMedlem 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 :)

kristofferMedlem sedan juni 20001 257 inlägg
#6

typeof kanske?

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

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

PaceMedlem sedan juni 20019 024 inlägg
#10

  :e

erkaMedlem 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

nikoMedlem 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
erkaMedlem sedan dec. 19996 522 inlägg
#13

Tack niko

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

Nice Pace, ska leka lite med den sen! Super

GrynetMedlem 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
}
131 ms totalt · 3 externa anrop · v20260731065814-full.29ac60f6
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
128 ms — hämta tråd, inlägg och bilagor (db)