VB 字符串 判断 分隔字符 问题?请指教,谢谢!
字符串a中的字段有一下3种形式的分隔:(1)*****空格(N个)*****空格(N个))*****空格(N个)......
(2)*****tab*****tab*****tab......
(3)*****,*****,*****,......
要求判断字符串中的字段是以什么字符间隔的,若是以空格间隔,还需要判断是几个空格一组来间隔的。
请指教,谢谢!
--------------------编程问答-------------------- 间隔标准吗?判断长度应该可以用len --------------------编程问答--------------------
--------------------编程问答--------------------
Option Explicit
Private Sub Command1_Click()
Dim strP As strting
Dim intP As String
strP = "***** ***** *****"
intP = InStr(1, strP, " ", vbTextCompare)
If intP <> 0 Then Debug.Print "间隔是空格"
intP = InStr(1, strP, ",", vbTextCompare)
If intP <> 0 Then Debug.Print "间隔是逗号"
intP = InStr(1, strP, vbTab, vbTextCompare)
If intP <> 0 Then Debug.Print "间隔是制表符"
End Sub
嗯,这个方法我使用了,不过如果是空格间隔,我需要知道是几个空格一组间隔的,这种方法貌似无法实现的,是否有办法知道空格个数呢?请指教,谢谢! --------------------编程问答--------------------
同样的办法,变通一下,在找到了第一个空格后,继续向后面找第一个*,这样就能计算出空格的数量了 --------------------编程问答-------------------- --------------------编程问答-------------------- 固定多个空格分隔时,确定空格个数:
--------------------编程问答-------------------- 奇怪的很,p2 = Instr(p1, a, Space(1)) p1没起作用,每次都是从第一个字符开始计数的。
Dim n As Integer, p1 As Long, p2 As Long
p2 = InStr(1, a, Space(1))
If p2 Then
Do
n = n + 1
p1 = p2
p2 = Instr(p1, a, Space(1))
Loop While p2 = p1 + 1
End If
刚试了一下,p2 = InStr(3, "abcf,defg", ",") p2=5
p2 = InStr(1, "abcf,defg", ",") p2=5
InStr([start, ]string1, string2[, compare]) start咋不起作用呢?
--------------------编程问答-------------------- 哪位知道原因呢?奇怪的很,不知哪不对的。 --------------------编程问答-------------------- 怎么不起作用了?返回的是string2从start开始第一次出现在string1的位置,从第3位开始查找,第一次出现","是在第5个字符上,从第1位开始查找,","是也在第5个字符上第一次出现 --------------------编程问答-------------------- 很温馨的小屋 --------------------编程问答--------------------
不好意思,我没懂你的意思,从第三位查找,怎么是第5个字符呢? --------------------编程问答-------------------- 是有 Bug:
Do
n = n + 1
p1 = p2 + 1
p2 = Instr(p1, a, Space(1))
Loop While p2 = p1 + 1
否则会找到同一个匹配。 --------------------编程问答-------------------- 返回的是string1中所在的位置,不是start开始计数,start开始查找是指忽略start前的字符。 --------------------编程问答-------------------- 找到一个好办法,不过效率很低。
Dim i%--------------------编程问答-------------------- 再上一个更短的代码,可直接运行:
Const s = "123 444 5655"
Do While Replace(s, Space(i + 1), "") <> s
i = i + 1
Loop
MsgBox i'这个i就是你要的空格数,会显示4
With CreateObject("vbscript.regExp")--------------------编程问答-------------------- 试问楼主
.Pattern = "\s+"
MsgBox "空格长度是:" & Len(.Execute("123 444 5655")(0).Value)
End With
字符串“A空格Tab,B空格Tab,C”
是用什么字符间隔的?
(^_^) --------------------编程问答--------------------
哦,给我输入的文件时标准的,只是无法确认其在输出时是以哪种字符为间隔的,你说的这种情况出现的可能性非常小,要不设计文件输出的人的思维习惯是不是有点奇怪呢,呵呵 --------------------编程问答-------------------- 用二进制读取抓每次连续出现32的数量? --------------------编程问答--------------------
如果是这个目的,就按照0f123的5楼办法处理。
处理文件我的习惯是不管三七二十一,先把各种复杂格式全都整理成统一的清爽格式,然后再解析处理。 --------------------编程问答--------------------
如果是这个目的,就按照0f123的5楼办法处理。
处理文件我的习惯是不管三七二十一,先把各种复杂格式全都整理成统一的清爽格式,然后再解析处理。
补充:VB , 基础类