检查一个单词中出现的字符数(VB)

时间:2018-04-04 14:26:45

标签: vb.net

我有一个数组,其中包含通过.ToCharArray方法从单词转换的字符。我想检查一下这个数组(字)中出现的字母数。我怎么能这样做?

1 个答案:

答案 0 :(得分:3)

一种方法是查找:

Dim letterLookup = yourCharArray.ToLookup(Function(c) c)
' For example the letter e, note that it's case sensitive '
Dim eLetterCount As Int32 = letterLookup("e"c).Count()

这样做效率很高,甚至可以查看String / Char()中未包含的字母,结果会得到0。

顺便说一句,您不需要使用ToCharArray,您可以将此代码用于原始字符串。

如果您想列出所有包含的字母:

Dim allLetters As IEnumerable(Of Char) = letterLookup.Select(Function(kv) kv.key)

如果您想忽略此案例,请将eE视为相同:

Dim letterLookup = yourCharArray.tolookup(Function(c) c, StringComparer.CurrentCultureIgnoreCase) 
  

例如单词' tent'。该程序将检查哪个字母   发生不止一次(t)并找到数组中的位置(在此   案例0,3)。它还会在另一个阵列中找到位置   字母。

然后我会使用另一种方法也使用LINQ:

Dim duplicateLetterPositions As Dictionary(Of Char,List(Of Integer)) = yourCharArray.
     Select(Function(c, index) New With {.Char = c, .Index = index}).
     GroupBy(Function(c) c.Char).
     Where(Function(grp) grp.Count > 1).
     ToDictionary(Function(grp) grp.Key, Function(grp) grp.Select(Function(x) x.Index).ToList())