Как преобразовать Label.Текст в цифрах

#c#

Вопрос:

 if (Application["Summary12"] != null)
        {
            string Name = Application["Summary12"].ToString();
            lbl12Cost.Text = Name;
        }
 
 if (Application["Summary12Pro"] != null)
        {
            string Name = Application["Summary12Pro"].ToString();
            lblProCost.Text = Name;
        }
 

Я хочу преобразовать обе эти метки «lbl12Cost» и «lblProCost» в целые числа, которые я могу сложить. В настоящее время оба они являются Label.Текст, но я хочу преобразовать их в числа.

Например, если lbl12Cost = 1 amp; lblProCost = 2, я хочу сложить их как числа, чтобы они были равны 3. Но в этом случае оба они являются текстовыми, и вывод будет 1 2, потому что это текст вместо чисел.

Я пытался использовать int.tryparse и convert.toint32, но это не сработает. Было интересно, есть ли какой-нибудь способ преобразовать текст в числа?

В настоящее время я использую ASP.NET , веб-форма HTML, файл aspx.cs.

Комментарии:

1. Как это связано с JavaScript или HTML? Это похоже на чистый вопрос C #.

2. Вы пробовали это? int sum = Convert.ToInt32(lbl12Cost.Text) Convert.ToInt32(lblProCost.Text) или вы имеете в виду что-то еще?

3. Это выдает мне эту ошибку «System. Исключение FormatException: «Входная строка была в неправильном формате «. »

4. Попробуйте console.log(lblProCost.Text) перед суммой и убедитесь, что строка действительно является допустимым числом…

5. Вы могли бы попробовать использовать хэш-функцию. Из того, что вы говорите, криптографический хэш может потребовать больше работы, чем необходимо. Возможно, более простой некриптовый хэш, такой как хэш FNV .

Ответ №1:

Если вы уверены, что тексты label преобразуются в целое число, вы можете напрямую выполнить следующее.

 int sum = Convert.ToInt32(lbl12Cost.Text)   Convert.ToInt32(lblProCost.Text); 
 

Но вы сказали, что получаете приведенное ниже исключение, что означает, что текст не преобразуется в целочисленное значение. Поэтому в этом случае вам следует использовать int.TryParse метод. который возвращает true, если входная строка преобразуется в int, в противном случае она возвращается false . поэтому, если он вернется false , вы можете обработать его в соответствии с вашими требованиями. Я привел один пример ниже.

Входная строка была в неправильном формате

 int cost = 0;
if(int.TryParse(lbl12Cost.Text, out cost) == true)
{
    ...
}
else
{
    ...
}
 

Ответ №2:

Я надеюсь, что это то, о чем вы спрашиваете.

 int x = Convert.ToInt32(lbl1.Text)   Convert.ToInt32(lbl2.Text);
 

или, если вы обращаетесь к значению в JavaScript, используйте parseInt() функцию, как показано ниже:

 int x = parseInt("string value 1")   parseInt("string value 2");
 

Ответ №3:

Вы можете использовать int.TryParse :

 if (int.TryParse(lbl12Cost.Text, out int a) amp;amp; 
    int.TryParse(lblProCost.Text, out int b)) {
  // Both lbl12Cost.Text and lblProCost.Text contain valid int values a and b

  // we can add these integer values, e.g. 
  int sum = a   b;

  lblSomeOtherLabel.Text = $"total: {sum}";
} 
else {
  // At least lbl12Cost.Text or lblProCost.Text doesn't have valid int 
}
 

Ответ №4:

Сначала проверьте, есть ли значение для метки.

 var num1 = Convert.ToInt32( lbl12Cost.Text);