2014-11-22 2 views
-1

내가 같은 문자열이있는 경우에 캐릭터 : 분할 다른 데이터 유형

Bridport, Dorset, 12977, 425 

그래서 난 문자열로 처음 두 부분과 마지막 두 부분으로 선언 할 수있는 분할 기능을 사용하는 방법이 있나요을 정수?

+1

쉼표로 구분하면 배열이 만들어지고 변수가 만들어지고 거기에서 유형을 형 변환 할 수 있습니다. – OneFineDay

+0

문자열의 부분은 여전히 ​​문자열입니다. Convert 또는 Cint [여기에 표시된대로] (http://stackoverflow.com/a/27080237/1070452) – Plutonix

+0

입력 형식이 유효하지 않다고 말했지만 시도했습니다. – Todd432

답변

2

String()으로 분할 한 다음 Int32.Parse을 사용하여 마지막 두 개를 정수로 파싱 할 수 있습니다.

Dim tokens = text.Split(","c) 
Dim part1 As String = tokens(0).Trim() 
Dim part2 As String = tokens(1).Trim() 
Dim part3 As Int32 = Int32.Parse(tokens(2).Trim()) 
Dim part4 As Int32 = Int32.Parse(tokens(3).Trim()) 

형식이이 슈퍼 안전 버전 사용할 수있는 유효한 경우에 당신이 모르는 경우 : 나는 문자열을 구문 분석 할 수 있는지 여부를 알 수있는 Nullable(Of Integer)을 사용하고

Dim part1 As String = tokens(0).Trim() 
Dim part2 As String = tokens.ElementAtOrDefault(1) 
If part2 IsNot Nothing Then part2 = part2.Trim() 
Dim part3 As String = tokens.ElementAtOrDefault(2) 
Dim part4 As String = tokens.ElementAtOrDefault(3) 
Dim num1 As Int32? = New Nullable(Of Int32) 
Dim num2 As Int32? = New Nullable(Of Int32) 
If part3 IsNot Nothing Then 
    Dim num As Int32 
    If Int32.TryParse(part3.Trim(), num) Then 
     num1 = num 
    End If 
End If 
If part4 IsNot Nothing Then 
    Dim num As Int32 
    If Int32.TryParse(part4.Trim(), num) Then 
     num2 = num 
    End If 
End If 

Integer에 성공적으로 있습니다. 그것에는 HasValueValue 속성이 있습니다. HasValueTrue을 반환하면 후자를 사용하십시오.

+0

입력 형식이 올바르지 않다고 계속 사용하는 경우 – Todd432

+0

@ Todd432 : 안전한 방법을 제공하기 위해 내 대답을 편집했습니다. –

-1
Dim info as string = "Bridport,Dorset,12977,425" 
Dim split as string() = info.split(",") 
Dim string1 as string = split(0) ' Reads Bridport 
Dim string2 as string = split(1) ' Reads Dorset 
Dim int1 as integer = split(2) ' Reads 12977 
Dim int2 as integer = split(3) ' Reads 425 
+5

[Option Strict On] (http://msdn.microsoft.com/en-us/library/zcd4xwzs.aspx)을 사용해야합니다. –