| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 525 人关注过本帖
标题:求助文件处理
只看楼主 加入收藏
夜雨霖铃
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2014-3-6
结帖率:50%
收藏
已结贴  问题点数:20 回复次数:6 
求助文件处理
我有一个txt文件格式如下:
53478    20131231000000    400000    1122700    -8.1
53486    20131231000000    402200    1134600    -4.9
...
其中第3列是经度,第四列是维度,然后我想把经纬度作为一个数组的下标,怎么从这个txt文件中截取啊?
搜索更多相关主题的帖子: 经纬度 
2014-03-07 14:25
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4947
专家分:30084
注 册:2008-10-15
收藏
得分:7 
数组的 下标???  那你这个数组那得多大??

处理的方法:

读一行
然后对一行进行替换,
先把 VbTAB 换成 空格 ,这步是容错处理 。
再把 两个空格 换成 一个空格 ,这步使用 DO 循环,当换好了后的字符串是不存在 二个空格时 结束循环。
然后再按空格使用 split 函数 把字符串分解成 数组 。
53478    20131231000000    400000    1122700    -8.1
  0             1             2         3         4
如上图,一行将会分成 5 个部分(0-4),第2,3元素就是你所需要的 第3 4 列。
再向后如何处理那就是你自己的事了。

授人于鱼,不如授人于渔
早已停用QQ了
2014-03-07 14:40
夜雨霖铃
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2014-3-6
收藏
得分:0 
回复 2楼 风吹过b
是不是可以用循环然后把每行赋给一个字符串变量,再用split把每一列分开并赋给一个字符串数组,然后从这个数组获取我要的信息?
2014-03-07 14:51
xlhcy2014
Rank: 2
等 级:论坛游民
帖 子:33
专家分:81
注 册:2014-2-6
收藏
得分:7 
如果你的文本里的数据 都是要用的 , 就采用顺序文件的读写操作,一行一行的读取信息,然后在处理下需要内容。
先定义个二维数组. Array_XY(最大经度,最大纬度), 说下吧。你把经纬度做下标,这个数组会很大,而且很多数组单元我估计也许你都用不上,这样有点浪费内存。
建议楼主采用  带两个参数的函数的方式来 处理问题。
如 function mypro(byval x , byval y) as long   把经纬度对应的信息 ,返回给接受的变量。
getinformation= mypro(纬度,经度)

[ 本帖最后由 xlhcy2014 于 2014-3-7 18:19 编辑 ]
2014-03-07 18:10
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4947
专家分:30084
注 册:2008-10-15
收藏
得分:0 
回3楼,就是这样的。

按行进行分解取你要数据。
可以把分解后的数据都放到数组里,后面再慢慢用。

数组可以用 二维数组(不推荐)
也可以使用 一维结构体数组(推荐)

授人于鱼,不如授人于渔
早已停用QQ了
2014-03-07 19:01
owenlu1981
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:13
帖 子:211
专家分:1130
注 册:2013-5-17
收藏
得分:7 
将TXT内容全部复制到Excel,再从Excel获取对应的行列数据即可
2014-03-07 19:28
xlhcy2014
Rank: 2
等 级:论坛游民
帖 子:33
专家分:81
注 册:2014-2-6
收藏
得分:0 
假设 你需要根据 经度 和 纬度 获取 第5列的信息 。程序 如下:
程序代码:
Option Explicit
Option Base 1
Dim array_xy(100) As String '这里暂定有100行需要读取的信息,具体情况自己设置
Private Function search(ByVal x As String, ByVal y As String) As String '定义个搜索函数
Dim jingdu As String, weidu As String, infor As String, n As Integer, pos As Integer, last As Integer
Dim count As Integer

Open "文件的路径" For Input As #1
Do While Not EOF(1)
pos = 1
count = count + 1
Line Input #1, array_xy(count)

For n = 1 To 4
pos = InStr(pos, array_xy(count), Space(4)) '看了一下你的每个数据隔了4个空格,如果不是4个,你自己再改一下
If n = 2 Then last = pos
If n = 3 Then jingdu = Trim(Mid(array_xy(count), last, pos - last)): last = pos '读取纬度
If n = 4 Then
weidu = Trim(Mid(array_xy(count), last, pos - last)) '读取经度
infor = Trim(Right(array_xy(count)), Len(array_xy(count) - pos)) '读取第5列信息
End If
Next n

If x = jingdu And y = weidu Then search = infor: Exit Function

Loop
MsgBox "没有搜索到相关的信息", vbOKOnly, "提示"
search = vbNullString
Close #1
End Function
Private Sub Command1_Click()
Dim result As String
result = search(经度,纬度)
End Sub

我也是个新手 ,接触VB不超过1个月, 以上程序仅供参考, 思路就是那样的,不敢保证100%正确。
2014-03-07 19:30
快速回复:求助文件处理
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.087744 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved