如何从含有大量空格的字符串中提取需要的参数
如下字符串:
“属性: NC程序 C8234CB01-01 输出文件 E:/NC/C8234CB01-01.tap 选项文件 C:/dcam/post/FANUC.opt 刀具编号直径长度刀尖圆角半径冷却补偿
刀具ID C8234CB01-01 1_1 12107 标准无1_1 C8234CB01-01_1
1_1(1)2107 标准无1_1 C8234CB01-01_1_11_1(1)
2107 标准无1_1 状态 : 自上次写入后修改”
如何将以上字符串按照空格进行分割?包括多个空格;这个是从一个软件导出来的,小弟在做这个软件的二次开发;谢谢!
[解决办法]
string的split函数
[解决办法]
不要去掉空格,去掉空格就不能用split了
空格正是split函数的依据.它可以根据空格把字符串拆成一个数组.
Dim s As String = "属性: NC程序 C8234CB01-01 输出文件 E:/NC/C8234CB01-01.tap 选项文件 C:/dcam/post/FANUC.opt 刀具 编号 直径 长度 刀尖圆角半径 冷却 补偿"
Dim SS() As String
SS = Split(s, " ")
Dim intI As Integer
For intI = 0 To UBound(SS)
Debug.Print(SS(intI))
Next
[解决办法]
看情况,看看是为什么会出现多个空格的,把它强行弄成一个空格
再比如,如果你知道,最多是有四个空格的,那就
strings.replace(S," "," ")'四个空格的
strings.replace(S," "," ")'三个空格的
strings.replace(S," "," ")'二个空格的
把它整一个循环,就可以对付N个空格,
s1=""
for intI=0 to 3
for intII=0 to intI
s1=s1 & " "
next
strings.replace(S,S1," ")
next
[解决办法]
晕,代码发出来之后就错了.
strings.replace(S," "," ")'四个空格的
strings.replace(S," "," ")'三个空格的
strings.replace(S," "," ")'二个空格的
中间是多个空格,发出来就变一个了,不知为何
[解决办法]
你再试下这段代码,这是包含多个空格的.就不解释了.
Dim s As String = "属性: NC程序 C8234CB01-01 输出文件 E:/NC/C8234CB01-01.tap 选项文件 C:/dcam/post/FANUC.opt 刀具 编号 直径 长度 刀尖圆角半径 冷却 补偿"
Dim SS() As String
SS = Split(s, " ")
Dim intI As Integer
Dim K As Integer
For intI = 0 To UBound(SS)
If SS(intI) = " " Then
K = K + 1
End If
Next
Dim YY(UBound(SS) - K) As String
Dim KK As Integer
For intI = 0 To UBound(SS)
If SS(intI) <> "" Then
YY(KK) = SS(intI)
Debug.Print(YY(KK))
KK = KK + 1
End If
Next
[解决办法]
我觉得吗 直接用空格分隔 然后 trim每个字符元素再进行比较,也是可以的
[解决办法]
空格了之后不能用trim的,因为某些空格,它直接就把它拆成了字符串,那些空格并不在已经拆好的字符串的前面或后面,trim没有用武之地
我前面那段代码之所以用两次循环,其中一次循环就是为了检查哪些字符是" ",检查" "的个数,这个CSDN的代码,贴出来之后,长段的空格就变成一个空格了,实在不方便,我干脆再弄一个,我用逗号,来代替空格,道理是一样的哦~
Dim S As String = "属性:,,,,,,,,,NC程序,C8234CB01-01,,,,,,,,输出文件,,,,,,,,,,,,E:/NC/C8234CB01-01.tap,选项文件,,,,,,,,,,,C:/dcam/post/FANUC.opt,,,,,刀具,,,,编号,直径,,,,,长度,,,,,,,,刀尖圆角半径,,,,,,,,,,,,,,,冷却,,,,,,,补偿"
Dim SS() As String
SS = Split(S, ",")
Dim intI As Integer
Dim K As Integer
For intI = 0 To UBound(SS) '这个循环用来检查""空值的个数
If SS(intI) = "" Then
K = K + 1
End If
Next
Dim YY(UBound(SS) - K) As String
Dim KK As Integer
For intI = 0 To UBound(SS) '这个循环把非空的值重新赋给另一个字符串数组
If SS(intI) <> "" Then
YY(KK) = SS(intI)
Debug.Print(YY(KK))
KK = KK + 1
End If
Next
[解决办法]
空格 是split的分隔符,所以空格与空格之间,它会拆出一个""空值,而不是空格与空格之间,它会拆出一个" "(空格)!