仅保留字符串的前60个字符

时间:2014-05-02 11:05:22

标签: c# string substring trim

伙计我在Model.Products[i].Description中有一个字符串。长度未知。

我想在变量中只包含它的前60个字符。

  var data = Model.Products[i].Description;
  var temp = string.Join(string.Empty,data.Take(60));

给我一​​个空值异常错误。 我做错了什么?

任何帮助?

6 个答案:

答案 0 :(得分:3)

使用Substring

注意:您需要检查输入的长度

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)

这里的所有答案都忽略了这个问题。这里datanull。调试程序并确保Model.Products[i].Description 不为空

获取前60个字符的当前方法有点迟钝,但正确。问题是,在开始尝试获取60个字符之前,您正在检索无效数据。

如果 null值被认为对您有效(也就是说,期望有时候为null)那么您需要先做空检查,然后再决定你想做什么。您希望tempnull还是空字符串?


以下是执行检查的示例代码,不是理想的代码,而是用于演示问题:

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