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多行数据) 展开
a b 你好 a
a bc 大家好 a
如何将这种数据进行分列呢?
就是分列放到数组里,数组arr=split("a b 你好 a"," ")这样就将字符串"a b 你好 a"按2个空格进行分列,现在是因字符串里的字符之间的空格数不一样,请问如何分列比较快呢(代码运行的速率,1W多行数据) 展开
5个回答
展开全部
你试试正则表达式方法,也可以提前处理文本文件,或按下面方法一行一行的处理
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
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
Loop
Close #1
Set reg = Nothing '卸载创建的对象
End Sub
展开全部
'将你的文字放到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
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多行,应该也只能一行一行处理,
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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
看哪个方式是你要的?
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
看哪个方式是你要的?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
许多方法都可以,问题是你打算输出啥结果,比如说你最终结果是吧处理好的数据存成文件?或者是整个文件处理到一个多维数组?还是处理成一列列的一维数组?
你要的不同的结果就有不同的写法效率才高
你要的不同的结果就有不同的写法效率才高
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
啥意思?你说清楚点呢?是对齐呢还是每个字符间的空格一样啊?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询