我正在编写一个程序来读取文本文件中的许多行(逐行),每行包含2个用逗号分隔的数字",",第一部分是纬度,第二部分是经度。我将每一行都存储在一个列表框中。
我有一个列表框,其中每个项目包含两个以逗号分隔的数字(纬度和经度)"," (例如:12,64)。 我想创建两个数组,第一个包含纬度的数组,第二个包含经度。
答案 0 :(得分:1)
首先,您应该定义适当的数据结构。纬度值通常是数字。所以,Double()
似乎是合适的。然后:
Dim lat1(ListBox1.Items.Count - 2) As Double
Dim lat2(ListBox1.Items.Count - 2) As Double
For i As Integer = 0 To ListBox1.Items.Count - 1
Dim itemString = ListBox1.Items(i)
Dim splitItemString = itemString.Split(","c)
'Use Parse only if you're absolutely sure that this works.
'Use TryParse otherwise
Dim lat = Double.Parse(splitItemString(0))
Dim lon = Double.Parse(splitItemString(1))
'Now we can fill the arrays
If i < ListBox1.Items.Count - 1 Then lat1(i) = lat
If i > 0 Then lat2(i - 1) = lat
Next
但是,仅计算距离几乎不需要两个数组。相反,你应该填充一个数组(甚至可能有一个合理的Struct
由纬度和经度值组成)然后:
For i As Integer = 0 To Coordinates.Count - 1
'Calculate distance between Coordinates(i) and Coordinates(i + 1)
Next
答案 1 :(得分:1)
我不确定我的原始问题是否正确,但我希望这些功能块会有所帮助。 此代码会将您的列表框项目重新分配为2个Double:
数组 Dim allLatitudes(0) As Double
Dim allLongtitudes(0) As Double
Dim counter As Integer
For Each item In ListBox1.Items
Dim tempstr = item.ToString
Dim value = tempstr.Split(","c)
Dim lat = Double.Parse(value(0)) ' to convert it to numeric
Dim lon = Double.Parse(value(1)) ' to convert it to numeric
ReDim Preserve allLatitudes(counter)
allLatitudes(UBound(allLatitudes)) = lat
ReDim Preserve allLongtitudes(counter)
allLongtitudes(UBound(allLongtitudes)) = lon
counter = counter + 1
Next
如果你想获得每个项目2个数组,一个包含除最后一个数据之外的所有值,第二个数据包含除第一个之外的所有值,而不是代码:
For Each item In ListBox1.Items
Dim tempstr = item.ToString
Dim value = tempstr.Split(","c)
Dim lat = value.Take(value.Length - 1).ToArray()
Dim lon = value.Skip(1).ToArray()
Next