文本文件中的内容删减,插入字符和排版的问题。

long12 2004-12-24 01:31:59
在一文本文件txt中有如下内容:

1 cnxzq1 112 好:05 06 08 14 18 20 21 31 54
坏:03 13 1 112.000 100% 成功
2 547888 14 好:03 08 09 19 24 29 31 46
坏:09 1 14.000 100% 成功
3 gqy 112 好:06 12 14 15 22 23 24 33 76
坏:09 10 15 40 20 5.600 65% 未成功

要处理成:

cnxzq1|05 06 08 14 18 20 21 31 54 + 03 13|4-8|0-9|同时|
547888|03 08 09 19 24 29 31 46 + 09|4-8|0-9|同时|
gqy|06 12 14 15 22 23 24 33 76 + 09 10 15 40|4-8|0-9|同时|

请问如何写代码? 谢谢帮忙!!
...全文
296 24 打赏 收藏 转发到动态 举报
写回复
用AI写文章
24 条回复
切换为时间正序
请发表友善的回复…
发表回复
cindytsai 2004-12-27
  • 打赏
  • 举报
回复
学习
maskdata 2004-12-27
  • 打赏
  • 举报
回复
可能还有更好的办法,不过我资质比较低还没想到,等我想到更好的再贴上来
maskdata 2004-12-27
  • 打赏
  • 举报
回复
Dim strRes As String
Dim strArr2() As String
Dim strArr3() As String
Dim strTemp, strfile, strArr() As String
Dim xkey As Boolean

Private Sub Command1_Click()
Open "C:/test.txt" For Input As #1
Do Until EOF(1)
Line Input #1, strTemp
If xkey = False Then
strfile = strfile & strTemp & " "
xkey = True
Else
strfile = strfile & strTemp
xkey = False
End If
Loop
Close #1
strArr = Split(strfile, "%")
For i = 0 To UBound(strArr) - 1 Step 1
If i = 0 Then
strArr(i) = strArr(i) & ":"
Else
strArr(i) = Mid(strArr(i), 2) & ":"
End If
strArr2 = Split(strArr(i), ":")
For n = 0 To UBound(strArr2) - 1 Step 1
strArr2(n) = strArr2(n) & " "
strArr3 = Split(strArr2(n), " ")

If n = 0 Then
If i = 0 Then
strRes = strRes + strArr3(1)
Else
strRes = strRes + strArr3(2)
End If
strRes = strRes + "|"
ElseIf n = 1 Then
For m = 0 To UBound(strArr3) - 2 Step 1
strRes = strRes + strArr3(m) + " "
Next m
strRes = strRes & "+ "
ElseIf n = 2 Then
For m = 0 To UBound(strArr3) - 4 Step 1
If m = UBound(strArr3) - 4 Then
strRes = strRes + strArr3(m)
Else
strRes = strRes + strArr3(m) + " "
End If
Next m

strRes = strRes & "|4-8|0-9|同时|"
If i <> UBound(strArr) - 1 Then
strRes = strRes _
& vbCrLf
End If
End If
Next n
Next i
rtbox.Text = strRes
End Sub

调试过没问题了,你拿去试试,应该可以看的懂我的代码吧(....本人编码够规范了吧....-_-!)
strRes是你要的最好结果,我把他显示在RichTextBox里了(rtbox)
long12 2004-12-27
  • 打赏
  • 举报
回复
再次试了一下,又没有问题了。谢谢各位!
long12 2004-12-27
  • 打赏
  • 举报
回复
我的vb是vb6sp6中文迷你版,大小只有6MB多,不知是否有问题?
Keepmyself 2004-12-27
  • 打赏
  • 举报
回复
可能是字体问题吧
maskdata 2004-12-27
  • 打赏
  • 举报
回复
那一定不是我代码的问题了,我这里试过了很正常的,我还把你的复制进去了对比一下,一点区别都没有的,你看看是不是你那里VB出问题了,或是系统字体有问题
long12 2004-12-27
  • 打赏
  • 举报
回复
谢谢maskdata!其他都很好,就是“同时”显示为2个黑方块,不知为什么?
long12 2004-12-25
  • 打赏
  • 举报
回复
to tztz520

你的代码只能对前两组数据进行处理,另外“同时”显示不出,“+”与前后数字之间都没有空格。
long12 2004-12-24
  • 打赏
  • 举报
回复
to maskdata

"还有从第2个开始要把第一个空格截取掉不要"

不是很明白,但要注意最后处理好的结果中的“+”与前后数字之间都有空格。
long12 2004-12-24
  • 打赏
  • 举报
回复
谢谢maskdata!让我慢慢琢磨一下,希望看到你的详细代码。
maskdata 2004-12-24
  • 打赏
  • 举报
回复
还有从第2个开始要把第一个空格截取掉不要
maskdata 2004-12-24
  • 打赏
  • 举报
回复
1 cnxzq1 112 好:05 06 08 14 18 20 21 31 54
坏:03 13 1 112.000 100% 成功
2 547888 14 好:03 08 09 19 24 29 31 46
坏:09 1 14.000 100% 成功
3 gqy 112 好:06 12 14 15 22 23 24 33 76
坏:09 10 15 40 20 5.600 65% 未成功

转成:

"1 cnxzq1 112 好:05 06 08 14 18 20 21 31 54 坏:03 13 1 112.000 100" + ":"
" 成功 2 547888 14 好:03 08 09 19 24 29 31 46 坏:09 1 14.000 100" + ":"
" 成功 3 gqy 112 好:06 12 14 15 22 23 24 33 76 坏:09 10 15 40 20 5.600 65" + ":"

转成:

"1 cnxzq1 112 好"+" " "05 06 08 14 18 20 21 31 54 坏"+" " "03 13 1 112.000 100"+" "
" 成功 2 547888 14 好"+" " "03 08 09 19 24 29 31 46 坏"+" " "09 1 14.000 100"+" "
" 成功 3 gqy 112 好"+" " "06 12 14 15 22 23 24 33 76 坏"+" " "09 10 15 40 20 5.600 65"+" "

然后:

1和别的分开算,1的话取第1组取第2位,不是1的话第1组取第3位,然后加"|"
然后全部是第2组取第1到倒数第2位,然后加"+",第3组取第1到倒数第4位然后加"|0-9|同时|"
maskdata 2004-12-24
  • 打赏
  • 举报
回复
我觉得和我写的一个程序差不多,不过现在快下班了,周一来帮你做好吗?
先说一下方法,先读到文本有多少行,然后/2得到数目
以%把文本转成数组
然后把每个数组元素加一个":"
再把这个元素以:转成3个数组
第1个取数组加" "转成另一个数组取第二位,第2个从第一位取到倒数第三位,第3个从第一位取到倒数第三位,然后加上"|4-8|0-9|同时|"
aohan 2004-12-24
  • 打赏
  • 举报
回复
不在明了
long12 2004-12-24
  • 打赏
  • 举报
回复
本身有编号,而且是按从小到大的顺序。
maskdata 2004-12-24
  • 打赏
  • 举报
回复
问一下楼主,每一组前边的编号有吗?还是为了大家看清楚问这个问题的时候加上去的?
long12 2004-12-24
  • 打赏
  • 举报
回复
tztz520的代码实现起来似乎有点接近要求,但好象还不能完全达到目的,其实我上面列出的文本内容只有3组,而实际上有数百组类似的数据要处理。不知哪位还有更好的方法,请不吝赐教,谢谢!
long12 2004-12-24
  • 打赏
  • 举报
回复
其实还是有规律的,就是保留“好:”后面所有的数字,“坏:”后面的至倒数第5个字串的所有数也保留,“好:”所在行的第2个字串也保留,其它剩余所有的均删除,然后再插入需要的字符并排版。
tztz520 2004-12-24
  • 打赏
  • 举报
回复
'我只看到这个规律,不知道对不对
加载更多回复(4)
【传感器】【鲁棒目标定位】基于平方距离迭代重新加权最小二乘法的鲁棒目标定位(Matlab代码实现)内容概要:本文介绍了基于平方距离迭代重新加权最小二乘法的鲁棒目标定位方法,结合传感器数据处理技术,旨在提升定位系统的抗干扰能力与精度,适用于存在异常值或噪声干扰的复杂环境。文通过Matlab代码实现该算法,展示了其在目标定位的有效性与鲁棒性,并探讨了相关参数设置对定位性能的影响,为传感器网络的定位问题提供了可行的技术方案。; 适合人群:具备一定信号处理、优化算法基础,从事传感器网络、目标定位、自动化或相关领域研究的研究生、科研人员及工程技术人员。; 使用场景及目标:①应用于无线传感器网络(WSN)、雷达、无人机等系统的高精度目标定位;②解决含有异常测距数据或非视距(NLOS)误差的实际定位问题;③通过迭代重加权策略提升传统最小二乘法的鲁棒性,实现更稳定的定位效果。; 阅读建议:建议结合Matlab代码实践操作,深入理解平方距离变换与迭代重加权机制的设计逻辑,重点关注权重函数的选择与收敛判据设定,同时可将其与其他定位算法(如WLS、M估计)进行对比分析以加深理解。

7,789

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧