C# 如何在字符串生成器中执行数学运算?
在我的控制器中,我使用WCF提取一些信息。为了简单起见,我将所有内容都放在C# 如何在字符串生成器中执行数学运算?,c#,stringbuilder,C#,Stringbuilder,在我的控制器中,我使用WCF提取一些信息。为了简单起见,我将所有内容都放在StringBuilder()中,并通过foreach循环迭代列表中的信息,如下所示: var myResult = new StringBuilder(); foreach (var myFruit in response.GetContestResult.ContestEndTimes.ToList()) htmlResult.AppendFormat("{0} Avg End Time: {1} <b
StringBuilder()
中,并通过foreach
循环迭代列表中的信息,如下所示:
var myResult = new StringBuilder();
foreach (var myFruit in response.GetContestResult.ContestEndTimes.ToList())
htmlResult.AppendFormat("{0} Avg End Time: {1} <br/>", myFruit.ContestantName, myfruit.ContestantEndTime);
return myResult.ToString();
但是,然后错误读取到字符串的格式不正确,即使我将其转换回如下字符串,也会执行相同的操作:
Convert.ToString(Int32.Parse(myfruit.ContestantEndTime) / 60))
我应该怎么做
如果myfruit.contellentEndTime是int,则int.Parse将抛出错误,因为此方法将字符串作为参数。如果是这种情况,则在分割之前不需要对其进行任何操作,只需使用:
htmlResult.AppendFormat("{0} Avg End Time: {1} <br/>", myFruit.ContestantName,
myfruit.ContestantEndTime / 60);
htmlResult.AppendFormat(“{0}平均结束时间:{1}
”,myFruit.name,
myfruit.endtime/60);
如果myFruit.CompetitorEndTime
是int
类型
htmlResult.AppendFormat("{0} Avg End Time: {1} ",
myFruit.ContestantName, myFruit.ContestantEndTime/60);
如果是字符串
类型,首先使用convert.ToInt32
方法将其转换为Int值
htmlResult.AppendFormat("{0} 3Avg End Time: {1} ",
myFruit.ContestantName, Convert.ToInt32(myFruit.ContestantEndTime)/60);
以上2将生成分钟的整数表示形式(无提醒)。这意味着,如果您的参赛者结束时间
值为240
或245
,它将只返回4
。但是如果你想要更多的时间,你可以试试这个
htmlResult.AppendFormat("{0} Avg End Time: {1}.{2} ", myFruit.ContestantName,
myFruit.ContestantEndTime/60, myFruit.ContestantEndTime%60);
现在,当您在
myFruit.CompetitorEndTime
中有245个时,上面的表达式将为您提供4.2
,我敢打赌一个或多个参赛者的结束时间中存在格式错误
你需要做的就是使用它。
您还应该执行null
检查
foreach (var myFruit in response.GetContestResult.ContestEndTimes.ToList())
{
// -1 will imply that there is an error.
int parsedTime = -1;
if (myfruit.ContestantEndTime != null &&
Int32.TryParse(myfruit.ContestantEndTime, out parsedTime))
{
parsedTime /= 60;
}
htmlResult.AppendFormat("{0} Avg End Time: {1} <br/>",
myFruit.ContestantName,
parsedTime);
}
foreach(响应中的var myFruit.getcontesticsresult.contesticsendtimes.ToList())
{
//-1表示存在错误。
int parsedTime=-1;
if(myfruit.contellentEndTime!=null&&
Int32.TryParse(myfruit.contellentEndTime,out parsedTime))
{
解析时间/=60;
}
htmlResult.AppendFormat(“{0}平均结束时间:{1}
”,
我的水果,我的名字,
解析时间);
}
无论myFruit.CompetitientEndTime是null
,“foo”
还是“37281”
,这都会起作用。您可以很容易地确定哪里有错误
这里真正的问题是。。。为什么
myFruit.CompetitiveEndTime
不是开始时的整数(或任何其他数字类型)?这里的输入错误不是编码中的。你能给我们一个CompetitiveEndTime的例子吗?也许问题是在解析IntI时,我改变了我的变量,提出了一些问题,你可以发布并修复它们。.如果competitorendtime
是字符串
。在解析之前,请确保它可以被解析。请改为尝试Int32.TryParse()
。我已经先尝试过了。这导致错误“/”不能应用于字符串和int类型的操作数这不可能是真的。如果它是int
,int.Parse
不会抛出异常,因为代码不会编译。
foreach (var myFruit in response.GetContestResult.ContestEndTimes.ToList())
{
// -1 will imply that there is an error.
int parsedTime = -1;
if (myfruit.ContestantEndTime != null &&
Int32.TryParse(myfruit.ContestantEndTime, out parsedTime))
{
parsedTime /= 60;
}
htmlResult.AppendFormat("{0} Avg End Time: {1} <br/>",
myFruit.ContestantName,
parsedTime);
}