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

数据如下:
a b 你好 a
a bc 大家好 a
如何将这种数据进行分列呢?
就是分列放到数组里,数组arr=split("a b 你好 a"," ")这样就将字符串"a b 你好 a"按2个空格进行分列,现在是因字符串里的字符之间的空格数不一样,请问如何分列比较快呢(代码运行的速率,1W多行数据)
最新回答
爱情的模样

2025-06-27 08:50:41

你试试正则表达式方法,也可以提前处理文本文件,或按下面方法一行一行的处理

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
爱你这出戏请给我一些台词

2025-06-27 10:59:30

'将你的文字放到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多行,应该也只能一行一行处理,
杀尽天下负心人

2025-06-27 12:10:38

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

看哪个方式是你要的?
赵家小子

2025-06-27 09:33:59

许多方法都可以,问题是你打算输出啥结果,比如说你最终结果是吧处理好的数据存成文件?或者是整个文件处理到一个多维数组?还是处理成一列列的一维数组?
你要的不同的结果就有不同的写法效率才高
孤冢清风

2025-06-27 02:56:40

啥意思?你说清楚点呢?是对齐呢还是每个字符间的空格一样啊?