如何获得具有不同空格的字符串中的单词(逐个单词)?

时间:2019-03-28 07:37:32

标签: .net string vb.net

我需要获取字符串中的单词,但问题是,它具有不同的间距类型(有空格,双倍空格,制表符),这是我具有的字符串的示例类型:

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"

4 个答案:

答案 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();