伙计我在Model.Products[i].Description
中有一个字符串。长度未知。
我想在变量中只包含它的前60个字符。
var data = Model.Products[i].Description;
var temp = string.Join(string.Empty,data.Take(60));
给我一个空值异常错误。 我做错了什么?
任何帮助?
答案 0 :(得分:3)
注意:您需要检查输入的长度
string data = Model.Products[i].Description;
string temp = string.Empty;
if(!string.IsNullOrEmpty(data) && data.Length >= 60)
temp = data.Substring(0,60);
else
temp = data;
答案 1 :(得分:3)
您可以使用
var temp = data.Substring(0, Math.Min(data.Length, 60));
如果字符串的长度小于60,则需要字符串的长度。
答案 2 :(得分:1)
哇,你实际上在你的问题上使用方法名作为标签,你是如此接近;)
var trim = data.Length > 60 ? 60 : data.Length;
data.Substring(0, trim);
答案 3 :(得分:1)
这里的所有答案都忽略了这个问题。这里data
为null
。调试程序并确保Model.Products[i].Description
不为空。
获取前60个字符的当前方法有点迟钝,但正确。问题是,在开始尝试获取60个字符之前,您正在检索无效数据。
如果 null
值被认为对您有效(也就是说,期望有时候为null
)那么您需要先做空检查,然后再决定你想做什么。您希望temp
是null
还是空字符串?
以下是执行检查的示例代码,不是理想的代码,而是用于演示问题:
string data = Model.Products[i].Description;
string temp;
if (data == null)
{
temp = //? what do you want "temp" to be if data is null?
}
else
{
temp = string.Join(string.Empty,data.Take(60));
}
答案 4 :(得分:0)
var temp = data.Substring(0, 60);
注意:在调用Substring方法之前检查字符串(即数据)是否为null or empty
及其长度。
以下是示例(如其他有效答案中所述)
string temp = string.Empty;
if(!string.IsNullOrEmpty(data) && data.Length >= 60)
temp = data.Substring(0,60);
else
temp = data;
答案 5 :(得分:0)
您正在使用string.Empty
为null,请尝试:
if (data.Length>=60)
{
temp=data.Substring(0,60);
}