C# 只保留字符串的前60个字符
伙计们,我在C# 只保留字符串的前60个字符,c#,string,substring,trim,C#,String,Substring,Trim,伙计们,我在Model.Products[I].Description中有一个字符串。长度未知的 我只想在变量中包含它的前60个字符 var data = Model.Products[i].Description; var temp = string.Join(string.Empty,data.Take(60)); 给我一个空值异常错误。 我做错了什么 有什么帮助吗 var temp = data.Substring(0, 60); 注意:在调用子字符串方法之前,检查字符串(即数
Model.Products[I].Description中有一个字符串。长度未知的
我只想在变量中包含它的前60个字符
var data = Model.Products[i].Description;
var temp = string.Join(string.Empty,data.Take(60));
给我一个空值异常错误。
我做错了什么
有什么帮助吗
var temp = data.Substring(0, 60);
注意:在调用子字符串方法之前,检查字符串(即数据)是否为null或空
及其长度
以下是示例(如其他有效答案所述)
哇,你实际上在你的问题上使用了方法名作为标记,你太接近了;)
使用
注意:您需要检查输入的长度
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;
你可以用
var temp = data.Substring(0, Math.Min(data.Length, 60));
如果字符串长度小于60,则取字符串长度。您使用的是string.Empty
为空,请尝试:
if (data.Length>=60)
{
temp=data.Substring(0,60);
}
这里所有的答案都忽略了这个问题<代码>数据
在此处为null
。调试程序并确保Model.Products[i].Description
不为空
当前获取前60个字符的方法有点迟钝,但正确。问题是,在您开始尝试获取60个字符之前,您正在检索无效数据
如果认为null
值对您有效(也就是说,您希望它有时是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));
}
如果长度小于60,则此操作不起作用,然后给出异常,如索引和长度必须引用字符串中的位置。错误:索引和长度必须引用字符串中的位置。+1到@DhavalPatel,将我的答案更新为更可靠的答案如果长度小于60,则此选项不起作用,它应给出异常,如索引和长度必须引用字符串中的某个位置。@DhavalPatel我已更新我的答案。谢谢。
String.Empty
不为空。是的,这是真的。这里的所有答案都忽略了这个问题<代码>数据在此处为null
。调试您的程序并确保Model.Products[i].Description
不为空。:)数据不为空。然后您可以发布实际的完整异常吗?也许模型
是零
,产品
是零
,或者产品
是零
(或者取决于产品
是什么类型,也许产品
是零
),这个问题相当模糊。为了提出一个更简单的问题,你可以做各种各样的简化。将型号.产品[i].说明
替换为“abcdefghijklmnop”
。将60替换为6。它是否仍然会给您一个空异常?你不应该在这里问问题,直到你用尽了所有的想法,然后问尽可能简单的问题。不要偷懒,这是基本的调试。干杯解决了问题+1@NishantRambhojun:然后数据
为空
;鉴于此处所做的更改,这是唯一可能的解释。@Nishantambhojun如前所述,数据为空,这就是为什么在操作字符串之前应始终检查字符串是否为空。
if (data.Length>=60)
{
temp=data.Substring(0,60);
}
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));
}