但是要保留特殊的单词

时间:2012-08-20 06:01:16

标签: vb.net arrays visual-studio-2012

我正在使用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'这些词进行硬编码,而是需要通过字符串变量来实现。

1 个答案:

答案 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)(单位分隔符)或您知道的任何不在输入字符串中的字符。

这种方法非常简单,可以保留物品的顺序。