为某些数字创建文本解析

时间:2014-02-21 19:10:28

标签: c#

我有一个文本框,我想用来检测某些数字(1 - 65),这些数字附加了一个值,用于对数值进行数学运算。

示例:当用户输入数字“50”时,我想将其与值4500(50,4500)相关联。

因此,对于每个数字1 - 65,我想分配一个特定值,然后当用户键入数字1 - 65时,程序将获取相关值并将其分配给变量,以便我可以进行数学运算。

int lvl50 = 4500;
lvl50 = clvl;

tolvl = clvl - currentexp;
int ttlvl = (tlvl / ptexp) +1;

我正在寻找类似的东西。

5 个答案:

答案 0 :(得分:1)

我认为您可以使用Dictionary<int,int>

var values = new Dictionary<int,int> { { 1, 1000 }, { 50, 4500 } ... };

然后你可以得到一个数字的相应值

values[50] // returns 4500

用户输入:

var input = int.Parse(textBox1.Text);
var value = values[input];

或使用TryParseContainsKey方法来避免可能的异常

int input = -1;
if(int.TryParse(textBox1.Text, out input) && values.ContainsKey(input))
{
    var value = values[input];
}

答案 1 :(得分:0)

我能想到的一种方法是使用在System.Collections.Generic下找到的Dictionary<TKey, TValue>;             values.Add(50,4500);:

var values = new Dictionary<int, int>();
values.Add(50, 4500);
// ... etc

答案 2 :(得分:0)

创建公式/函数: 如果数字1-65值具有任何公式,则可以使用创建一个方法来实现该公式值以便使用它。

示例:

public static int myFormula(int number)
{
    return number * 90;
}

<强>词典: 如果以下数字匹配的值没有任何可见的公式,您可以使用Dictionary<int, int>将它们与特定值匹配。

示例:

var myDic = Dictionary<int, int>() {
    new { 1, 1 },
    new { 50, 4500 },
};

答案 3 :(得分:0)

从你的代码片段中,它看起来(对我而言)就像你可能正在根据键计算字典中的值。您可以在单独的方法中放置用于计算值的逻辑:

private int CalculateValue(int x)
{
    // calculate value and return it
}

然后为特定范围的数字创建一个字典,如下所示:

var dict = Enumerable.Range(1, 65).ToDictionary(x => x, CalculateValue);

要使用字典中的元素,只需使用键引用它:

var matchingValue = dict[50];  // Lookup key 50

如果密钥可能不存在,您可以测试它:

var value = dict.ContainsKey(72) ? dict[72] : -1;  // Assign some default value

答案 4 :(得分:0)

使用类似其他答案建议的字典对您有用,但如果您的数字1-65没有间隙,您可以使用列表(甚至是简单的数组)。列表的索引将是您的输入。这比字典更容易,也更有效率。

var values = new List<int> { 1000 , 4500 };

然后您可以获得相应的用户输入值:

int input, value;
if(int.TryParse(textBox1.Text, out input)){
  if(values.Contains(input){
    value = values[input];
  }
}