| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 630 人关注过本帖
标题:各位高手帮忙看一下如何通过VB对文本转换
只看楼主 加入收藏
nick_dd
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2013-5-19
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:4 
各位高手帮忙看一下如何通过VB对文本转换
以下是文本文件内容:
**********************************************************************************************************************
TABLE:  "BRIDGE DESIGN PREFERENCES - JTG-D62-2004"
   Importance="Class II"   FactLim=1
 
TABLE:  "BRIDGE DESIGN PREFERENCES - AASHTOLRFD07"
   HingeOpt="Auto: AASHTO/Caltrans Hinge"
 
TABLE:  "JOINT COORDINATES"
   Joint=1   CoordSys=GLOBAL   CoordType=Cartesian   XorR=-3   Y=-3   Z=0   SpecialJt=No   GlobalX=-3   GlobalY=-3   GlobalZ=0
   Joint=2   CoordSys=GLOBAL   CoordType=Cartesian   XorR=-3   Y=-3   Z=3   SpecialJt=No   GlobalX=-3   GlobalY=-3   GlobalZ=3
   Joint=3   CoordSys=GLOBAL   CoordType=Cartesian   XorR=-3   Y=3   Z=0   SpecialJt=No   GlobalX=-3   GlobalY=3   GlobalZ=0
   Joint=4   CoordSys=GLOBAL   CoordType=Cartesian   XorR=-3   Y=3   Z=3   SpecialJt=No   GlobalX=-3   GlobalY=3   GlobalZ=3
   Joint=5   CoordSys=GLOBAL   CoordType=Cartesian   XorR=3   Y=-3   Z=0   SpecialJt=No   GlobalX=3   GlobalY=-3   GlobalZ=0
   Joint=6   CoordSys=GLOBAL   CoordType=Cartesian   XorR=3   Y=-3   Z=3   SpecialJt=No   GlobalX=3   GlobalY=-3   GlobalZ=3
   Joint=7   CoordSys=GLOBAL   CoordType=Cartesian   XorR=3   Y=3   Z=0   SpecialJt=No   GlobalX=3   GlobalY=3   GlobalZ=0
   Joint=8   CoordSys=GLOBAL   CoordType=Cartesian   XorR=3   Y=3   Z=3   SpecialJt=No   GlobalX=3   GlobalY=3   GlobalZ=3

 
TABLE:  "CONNECTIVITY - FRAME"
   Frame=1   JointI=1   JointJ=2   IsCurved=No   Length=3   CentroidX=-3   CentroidY=-3   CentroidZ=1.5
   Frame=2   JointI=3   JointJ=4   IsCurved=No   Length=3   CentroidX=-3   CentroidY=3   CentroidZ=1.5
   Frame=3   JointI=5   JointJ=6   IsCurved=No   Length=3   CentroidX=3   CentroidY=-3   CentroidZ=1.5
   Frame=4   JointI=7   JointJ=8   IsCurved=No   Length=3   CentroidX=3   CentroidY=3   CentroidZ=1.5
   Frame=5   JointI=2   JointJ=6   IsCurved=No   Length=6   CentroidX=0   CentroidY=-3   CentroidZ=3
   Frame=6   JointI=4   JointJ=8   IsCurved=No   Length=6   CentroidX=0   CentroidY=3   CentroidZ=3
   Frame=7   JointI=2   JointJ=4   IsCurved=No   Length=6   CentroidX=-3   CentroidY=0   CentroidZ=3
   Frame=8   JointI=6   JointJ=8   IsCurved=No   Length=6   CentroidX=3   CentroidY=0   CentroidZ=3
*************************************************************************************************************
现在想将红色部分的内容提取生成一下蓝色内容到另一文本1.txt文件中,就是首先查找到TABLE:  "JOINT COORDINATES",提取“Joint=1”等号后面的“1”(1为节点号),“XorR=-3”、“Y=-3”、“Z=0”(XorR,Y,Z为节点X,Y,Z坐标值)等号后面的-3、-3、0,然后形成“节点号,节点X坐标值,节点Y坐标值,节点Z坐标值”的形式。最后1.txt文本的内容为:
*****************************
* JOINT COORDINATES
  1, -3,-3,-3,0
  2, -3,-3,-3,3
  3, -3,-3, 3,0
  4, -3,-3, 3,3
  5,  3, 3,-3,0
  6,  3, 3,-3,3
  7,  3, 3, 3,0
  8,  3, 3, 3,3


[ 本帖最后由 nick_dd 于 2013-5-19 22:49 编辑 ]
搜索更多相关主题的帖子: 文本文件 如何 
2013-05-19 22:46
nick_dd
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2013-5-19
收藏
得分:0 
本人刚学VB,非计算机专业,自学的,工作中经常遇到要将文本格式转换到另外的格式,VB还不是很熟,经常遇到一些看似简单越感觉无从下手的问题,想通过该论坛开阔下思路啊
2013-05-19 22:53
lowxiong
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:27
帖 子:653
专家分:3402
注 册:2008-5-7
收藏
得分:20 
帮你弄弄,首先在vb中新建一工程,放一个command按钮,默认名称command1,将你原始文件放到c盘根目录下,文件名改名为a.txt,拷贝下列代码,运行即可看到转换结果。
'***************************拷贝下列代码*************************************
Private Sub Command1_Click()
  Dim a As String
  a = "c:\a.txt"    '假设原始文件是位于c盘根目录下,文件名为a.txt
  a = getMyfirstNeed(a)
  a = GetMyLastNeed(a)
  MsgBox a & vbCrLf & "你自己想想怎么把最终数据写进文件"
End Sub

Function getMyfirstNeed(Fn As String) As String
  '本函数获取我首先想得到的原始数据,Fn是原始数据所在的文件名,该数据即是红色字符
  Dim a As String, b As String, i As Long, f As Boolean
  i = FreeFile
  getMyfirstNeed = ""
  f = False
  Open Fn For Input As i
  '打开指定文件
  While Not EOF(i)
    Line Input #i, a
    If f And InStr(a, "CONNECTIVITY - FRAME") <> 0 Then f = False
    '在读入开关开的情况下发现TABLE字符,表示所需数据已经读完,读入数据开关关闭
    If f Then getMyfirstNeed = getMyfirstNeed & a  '如果标志开关是开的,开始读入需要的数据(你所标注的红色部分)
    If InStr(a, "JOINT COORDINATES") <> 0 Then f = True
    '如果读入TABLE:  "JOINT COORDINATES"表示后面就是所需要的数据,读入数据开关开
  Wend
  Close #i
End Function
Function GetMyLastNeed(MyFirst As String) As String
  '根据首次得到数据提取最终需要的数据并返回最终数据
  Dim b() As String, c() As String, i As Integer, j As Integer
  b = Split(MyFirst, "Joint=")  '将所需字符以“Joint=”为分隔符放到数组b中
  GetMyLastNeed = "* JOINT COORDINATES" & vbCrLf
  For i = 0 To UBound(b)
    c = Split(b(i), "=")     '将数组b中数据以“=”为分隔符隔开,所需要的数字都会在每组数前面
    If UBound(c) = 9 Then GetMyLastNeed = GetMyLastNeed & Val(Left(c(0), 3)) & "," & Val(Left(c(3), 3)) & "," & Val(Left(c(7), 3)) & "," & Val(Left(c(8), 3)) & "," & Val(Left(c(9), 3)) & vbCrLf
    '组合所有位于前面的数字最后得到自己所需的数字
  Next
End Function
收到的鲜花
  • nick_dd2013-05-20 09:30 送鲜花  3朵   附言:我很赞同
2013-05-20 08:09
nick_dd
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2013-5-19
收藏
得分:0 
回复 3楼 lowxiong
谢谢lowxiong,没想到这么快就解决了困恼我很久的难题了,以后要多多上论坛逛逛
2013-05-20 09:29
Artless
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:4211
专家分:28888
注 册:2009-4-8
收藏
得分:0 
以下是引用nick_dd在2013-5-20 09:29:32的发言:

谢谢lowxiong,没想到这么快就解决了困恼我很久的难题了,以后要多多上论坛逛逛

请结贴

无知
2013-05-20 11:27
快速回复:各位高手帮忙看一下如何通过VB对文本转换
数据加载中...
 
   



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

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