我需要获取字符串中的单词,但问题是,它具有不同的间距类型(有空格,双倍空格,制表符),这是我具有的字符串的示例类型:
label1.text = "119 2019-02-20 09:26:30 1 0 1 0"
我需要这样的结果
labeloutput1.text = "119"
labeloutput2.text = "2019-02-20"
labeloutput3.text = "09:26:30"
labeloutput4.text = "1"
labeloutput5.text = "0"
labeloutput6.text = "1"
labeloutput7.text = "0"
答案 0 :(得分:3)
如果您使用Split(char[], StringSplitOptions)
的{{1}}重载,则可以删除空条目:
string.Split()
您还可以自己拆分然后删除空的:
string[] result = label1.Replace('\t', ' ').Text.Split(" ".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
答案 1 :(得分:1)
如果要使用VB.NET,则适用:
要么:
Dim result As String() = label1.Replace(vbTab, " "c).Text.Split(" ".ToCharArray(), StringSplitOptions.RemoveEmptyEntries)
或:
Dim result As String() = label1.Text.Replace(vbTab, " "c).Split(" "c).Where(Function(x) x <> "").ToArray()
这是Ashkan Mobayen Khiabani的答案移植到了VB.NET。
答案 2 :(得分:0)
这应该做您想要的(VBA):
Dim input, splitResult, i
input = "119 2019-02-20 09:26:30 1 0 1 0"
input = Replace(input, chr(9), " ") ' replace tab with space
Do While Instr(input, " ") > 0 ' keep looping until there are no double spaces
input = Replace(input, " ", " ") ' replace double space with space
Loop
splitResult = Split(input, " ") ' split by space
For i = 0 to Ubound(splitResult) ' loop through the result
MsgBox splitResult(i)
Next
结果:
119
2019-02-20
09:26:30
1
0
1
0
答案 3 :(得分:0)
虽然@Ashkan解决方案可以正常工作,但我认为您可以省略.Replace('\t', ' ')
。无需替换那些多余的大空格(制表符),因为您已用StringSplitOptions.RemoveEmptyEntries
我会做;
string[] result = label1.text.Split(" ".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
或者您更喜欢正则表达式;
var result = Regex.Split(label1.text, @"\s+").Where(s => s != string.Empty).ToArray();