#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);