分割数组的问题

aiur2000 2003-09-29 08:21:09
最近要做一个程序需要对文本进行分析。

------------------
1 3467 c-basic
2 3563 vb-vc
3 3742 sql-sybase
------------------------------------

我希望分别能得到"c""basic" "vb""vc" "sql""sybase"
但是我一、不知道每行中怎样分割"-"前后的字符
二、不知道怎样再取换行后的东西。

请有会的高手给点例子,希望有源码。能简单实现就行。
...全文
100 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
northwolves 2003-10-01
  • 打赏
  • 举报
回复
Private Sub Form_Load()
Dim a(2)
a(0) = "1 3467 c-basic"
a(1) = "2 3563 vb-vc"
a(2) = "3 3742 sql-sybase"
For i = 0 To 2
MsgBox Join(Split(Split(a(i), " ")(2), "-"), " ,")
Next
End Sub
aiur2000 2003-09-30
  • 打赏
  • 举报
回复
感谢3位,讲的都很详细,我去试试。
rainstormmaster 2003-09-29
  • 打赏
  • 举报
回复
上面的程序是假设你将数据
1 3467 c-basic
2 3563 vb-vc
3 3742 sql-sybase
保存在c:\tt.txt中

rainstormmaster 2003-09-29
  • 打赏
  • 举报
回复
上面的程序是假设你将数据
1 3467 c-basic
2 3563 vb-vc
3 3742 sql-sybase
保存在c:\tt.txt中

rainstormmaster 2003-09-29
  • 打赏
  • 举报
回复
分割"-"前后的字符,用split函数:

Private Sub Command1_Click()
On Error Resume Next
Dim arr As Variant
Dim mbyte() As Byte
Dim mlen As Long
Dim filename As String
filename = "c:\tt.txt"
mlen = FileLen(filename)
ReDim mbyte(mlen - 1)
Open filename For Binary As #1
Get #1, , mbyte
Close #1
Dim s As String
s = StrConv(mbyte, vbUnicode)
'如果数据保存在字串中,则从此开始
arr = Split(s, vbCrLf)
Dim i As Long, j As Long, m As Long
Dim langleft() As String, langright() As String
Dim k As Long
Dim temps As String, arrtemp As Variant
k = 0
For i = 0 To UBound(arr)
If Len(arr(i)) > 0 Then
ReDim Preserve langleft(k)
ReDim Preserve langright(k)
m = Len(arr(i))
j = InStrRev(arr(i), " ")
temps = Right(arr(i), m - j)
arrtemp = Split(temps, "-")
langleft(k) = arrtemp(0)
langright(k) = arrtemp(1)
Debug.Print langleft(k)
Debug.Print langright(k)
k = k + 1
End If
Next
End Sub
luckysym 2003-09-29
  • 打赏
  • 举报
回复
换行符为Chr(13) + Chr(10)
luckysym 2003-09-29
  • 打赏
  • 举报
回复
Split函数
返回一个下标从零开始的一维数组,它包含指定数目的子字符串
Split(expression[, delimiter[, count[, compare]]])

Split函数语法有如下几部分:

部分 描述
expression 必需的。包含子字符串和分隔符的字符串表达式 。如果expression是一个长度为零的字符串(""),Split则返回一个空数组,即没有元素和数据的数组。
delimiter 可选的。用于标识子字符串边界的字符串字符。如果忽略,则使用空格字符(" ")作为分隔符。如果delimiter是一个长度为零的字符串,则返回的数组仅包含一个元素,即完整的 expression字符串。
count 可选的。要返回的子字符串数,–1表示返回所有的子字符串。
compare 可选的。数字值,表示判别子字符串时使用的比较方式。关于其值,请参阅“设置值”部分。


设置值

compare参数的设置值如下:

常数 值 描述
vbUseCompareOption –1 用Option Compare语句中的设置值执行比较。
vbBinaryCompare 0 执行二进制比较。
vbTextCompare 1 执行文字比较。
vbDatabaseCompare 2 仅用于Microsoft Access。基于您的数据库的信息执行比较。
marksmith 2003-09-29
  • 打赏
  • 举报
回复
Dim myString As String, v As Variant
myString = "1 3467 c-basic"
myString = Mid(myString, InStrRev(myString, " ") + 1)
v = Split(myString, "-")
Print v(0), v(1)

7,762

社区成员

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

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