Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 只保留字符串的前60个字符_C#_String_Substring_Trim - Fatal编程技术网

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