如何在VB

时间:2016-06-29 12:36:08

标签: vb.net string loops character

我正在创建一个程序,其中代码需要从字符串中的每个字符获取一个值(长度可能不同)。例如名称,例子,Tony,其中T = 1,O = 4,N = 7,Y = 3.这必须增加总数。我已经尝试过循环,但只输出1作为输出,即使字符串中没有值也没有。

Dim FNTL As Integer = Nothing

    Dim FN = FN_TBX.Text
    For Each A, J, S As Char In FN_TBX.Text
        FNTL = +8
    Next

    Dim FNTLstr
    FNTLstr = Convert.ToString(FNTL)
    LN_TBX.Text = FNTL

FN_TBX是文本框输入 FN是文本框输入 FNTL是总数 FNstr是字符串格式的总数

某些字符具有相同的值,例如上面的,A,J,S是=到8.整数转换是将总数显示为文本框。

1 个答案:

答案 0 :(得分:2)

逻辑并不完全清楚。也许您应该有一个Dictionary(Of Char, Int32)来获取每个char的值,如果没有定义,则返回值。

以下是一个声明为类字段的字典示例:

Dim _charValue As New Dictionary(Of Char, Int32) From
{
        {"t"c, 1}, {"T"c, 1},
        {"o"c, 4}, {"O"c, 4},
        {"n"c, 7}, {"N"c, 7},
        {"y"c, 3}, {"Y"c, 3},
        {"a"c, 8}, {"A"c, 8},
        {"j"c, 8}, {"J"c, 8},
        {"s"c, 8}, {"S"c, 8}
}

现在您可以计算方法中的总和,例如使用简单的循环:

Dim sum as Int32 = 0
For Each c As Char In FN_TBX.Text
    Dim charValue = 0
    If Not _charValue.TryGetValue(c, charValue)
        charValue = 1 ' fallback value
    End If
    sum += charValue 
Next
LN_TBX.Text = sum.ToString()