vb 将字符串按不同数量的空格进行分列

数据如下:ab你好aabc大家好a如何将这种数据进行分列呢?就是分列放到数组里,数组arr=split("ab你好a","")这样就将字符串"ab你好a"按2个空格进行分... 数据如下:
a b 你好 a
a bc 大家好 a
如何将这种数据进行分列呢?
就是分列放到数组里,数组arr=split("a b 你好 a"," ")这样就将字符串"a b 你好 a"按2个空格进行分列,现在是因字符串里的字符之间的空格数不一样,请问如何分列比较快呢(代码运行的速率,1W多行数据)
展开
 我来答
mafan8
2012-11-16 · TA获得超过1.7万个赞
知道小有建树答主
回答量:927
采纳率:0%
帮助的人:770万
展开全部
你试试正则表达式方法,也可以提前处理文本文件,或按下面方法一行一行的处理

Private Sub Command1_Click()
Dim s As String '读取的字符串
Dim txtF As String '文本文件路径
Dim reg As Object '正则表达式对象
Dim arr() As String '分隔后的数组
txtF = "c:\1.txt" '设定文本文件路径和名称

Set reg = CreateObject("vbscript.regexp") '创建正则表达式路径
reg.Global = True '搜索整个字符串
reg.Pattern = "\s+" '搜索一个或多个空格连成的字符串

Open txtF For Input As #1
Do While Not EOF(1)
Line Input #1, s
s = reg.Replace(s, " ") '搜索到的字符串替换为一个空格
arr = Split(s, " ") '存入数组
' For i = 0 To UBound(arr)
' Print arr(i),
' Next
' Print
Loop
Close #1
Set reg = Nothing '卸载创建的对象

End Sub
iisheng
2012-11-16 · TA获得超过308个赞
知道小有建树答主
回答量:531
采纳率:100%
帮助的人:476万
展开全部
'将你的文字放到text1
Private Sub Command6_Click()

Dim S1 As String, sK As Variant, sN As Variant, K As Long, L As Long
s1=text1.text
Do While InStr(1, S1, " ") > 0
S1 = Replace(S1, " ", " ")
Loop
sN = Split(S1, vbCrLf)
For K = 0 To UBound(sN) - 1
sK = Split(sN(K), Chr(10))
MsgBox sN(K) '显示每一行
For L = 0 To UBound(sK) - 1
MsgBox sN(L) '显示每一列
Next
Next
End Sub
追问
就是分列放到数组里,数组arr=split("a    b    你好     a","  ")这样就将字符串"a    b    你好     a"按2个空格进行分列,现在是因字符串里的字符之间的空格数不一样,请问如何分列比较快呢(代码运行的速率,1W多行数据),数据在txt文件里的
追答
前面一个DO循环就是,先将多个空格全转化为一个空格,然后按一个空格分割
Open S1 & "e:\stud.txt" For Input As #1 ‘先读txt
S1 = Trim(StrConv(InputB(LOF(1), 1), vbUnicode))
Close #1 '
'1w多行,应该也只能一行一行处理,
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
dgtianhua
2012-11-16 · 超过16用户采纳过TA的回答
知道答主
回答量:52
采纳率:0%
帮助的人:25.3万
展开全部
Private Sub Form_Load()
Dim a As String
Dim b As String
Dim c As String
Dim d As String

a = "a"
b = "bd"
c = "absc"
d = "ks"

Debug.Print "方式1:" & a & b & c & d
Debug.Print "方式2:" & fmt(a) & fmt(b) & fmt(c) & fmt(d) ‘应该是你想要的
Debug.Print "方式3:" & a, b, c, d
Debug.Print "方式4:" & a & vbTab & b & vbTab & c & vbTab & d
End Sub
Private Function fmt(s1 As String) As String
fmt = s1 & Space(6 - Len(a)) 'fmt = Space(6 - Len(a)) & s1 '右对齐 6是列的长度
End Function

看哪个方式是你要的?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
kolinskysky
2012-11-16 · 超过16用户采纳过TA的回答
知道答主
回答量:48
采纳率:0%
帮助的人:46万
展开全部
许多方法都可以,问题是你打算输出啥结果,比如说你最终结果是吧处理好的数据存成文件?或者是整个文件处理到一个多维数组?还是处理成一列列的一维数组?
你要的不同的结果就有不同的写法效率才高
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
格格大人吉祥
2012-11-16 · TA获得超过190个赞
知道答主
回答量:157
采纳率:0%
帮助的人:76.7万
展开全部
啥意思?你说清楚点呢?是对齐呢还是每个字符间的空格一样啊?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式