我正在使用VS2012,vb.net。
我想将字符串加载到数组中。该字符串是一系列由空格(“”)分隔的单词。
目前我正在使用以下代码:
Dim stringTempCurrentGameTypes() As String = Split(stringTypeList, " ")
这完美无缺。但是,我有一些异常加载到数组中的一些数据。有时字符串中的数据(由空格分隔的字符串)有两个单词,我想将它作为一个项加载到数组中,而不是两个项。
以下是我正在谈论的字符串示例:
tourney ffa team ctf clan arena test
例外是“氏族竞技场”这两个词。
目前,如果我只使用split命令,我会得到一个包含以下元素的数组:
item(0) = tourney
item(1) = ffa
item(2) = team
item(3) = ctf
item(4) = clan
item(5) = arena
item(6) = test
我追随以下内容:
item(0) = tourney
item(1) = ffa
item(2) = team
item(3) = ctf
item(4) = clan arena
item(5) = test
如何检测添加到数组中的项目是否为“clan arena”,并将其添加为一个条目,而不是两个条目?此外,'clan arena'这个词可能会改变,所以我不需要对'clan arena'这些词进行硬编码,而是需要通过字符串变量来实现。
答案 0 :(得分:2)
当然,有几种方法可以做到这一点。
一种方法是用输入字符串替换输入字符串中所有特殊项的空格,拆分输入字符串,然后将临时字符更改回原始空格。
示例:强>
Dim raw = "tourney ffa team ctf clan arena test"
Dim special_words = new String() {"clan arena"}
Dim tmp_char = "$"
For Each word in special_words
raw = raw.Replace(word, word.Replace(" ", tmp_char))
Next
Dim result = raw.Split(new Char() {" "c})
For i = 0 To result.Count -1
result(i) = result(i).Replace(tmp_char, " ")
Next
作为临时角色,您可以使用不可打印的字符,例如Chr(31)
(单位分隔符)或您知道的任何不在输入字符串中的字符。
这种方法非常简单,可以保留物品的顺序。