在C#中将String转换为Int

时间:2013-08-07 12:36:49

标签: c#

我有一个字符串

string  w =  y + "/" + fromRow[col2.ColumnName];

和w返回值,如0/5

“0/5”,我必须在int32上转换它。我试过了

int.parse ,但其显示错误输入字符串的格式不正确。

string w="0/5"
int m=int32.parse(W)

我也尝试过convert.toint32,但它也显示错误。

    string w="0/5"
    int m=Convert.ToInt32(W)

4 个答案:

答案 0 :(得分:1)

将它们分开解析,然后分开。

int x = Int32.Parse(y);
int y = Int32.Parse(fromRow[col2.ColumnName]);
int m = x/y;

虽然你的意思是使用双打吗?由于你要分开,所以在这里使用int没有多大意义。

编辑:根据评论,您希望将0/5字面存储在数据库中。整数不包含这样的值。

我认为您需要更改数据库以存储string,而这样才能存储0/5

如果要将数据库中的0/5解析为2个单独的整数,请在字符串上使用String.Split,并将其传递给/

答案 1 :(得分:0)

如果字符串"0/5"仅用于显示目的,那么您只需要存储构成显示值的两个整数组件。您可以根据需要使用这两个值来创建“显示字符串”。

例如,如果这是测验的用户分数,那么您的两个值是“用户分数”和“最高分数”。每个都将作为int存储在两个单独的数据库字段中。

然后,只要您需要显示它,您只需重新创建字符串,例如:

string display = string.Format("{0}/{1}", userScore, maximumScore);
//where totalScore and maximumScore have been pulled from your DB

当然,在测验的例子中,你可能无论如何都能从其他数据重新计算“最高分”(例如问题数),因此只需要存储第一个值,{{ 1}}。

在您的示例中,只需将userScore的值存储在数据库中。

答案 2 :(得分:0)

整数是一个没有小数部分的数字,例如,3,28,-76,154等。你有一个字符串,“0/5”。 “0/5”不代表数字(尤其是你说它不是一个分数),所以它不能转换为整数,因为它不是同一种数据。您需要更改要存储的列的数据类型,或以不同的方式存储数据(例如,将两个整数存储在不同的列中)。

答案 3 :(得分:-2)

   Try this: 
  string line = "1/5";
  int idx = line.IndexOf('/');
  Console.WriteLine(idx);
  int a = Int32.Parse(line.Substring(0, idx));
  Console.WriteLine(a);

  int b = Int32.Parse(line.Substring(idx+1, line.Length - (idx+1)));
  Console.WriteLine(b);
  decimal result = a/b;

            Console.WriteLine(result);