如何将字符串的长度限制为150个字符?

时间:2011-07-26 16:16:23

标签: c#

我尝试了以下内容:

var a = description.Substring(0, 150);

然而,如果描述的长度小于150个字符,则会出现问题。那么有另一种方法可以将长度限制为150,当字符串长度为例如20时,不会产生错误。

9 个答案:

答案 0 :(得分:35)

var a = description == null 
        ? string.Empty 
        : description.Substring(0, Math.Min(150, description.Length));

答案 1 :(得分:19)

var a = description.Substring(0, Math.Min(150, description.Length));

只需抓取150个字符的子字符串,或整个字符串,以较短者为准。

答案 2 :(得分:12)

尝试以下扩展方法

public static string LimitTo(this string data, int length) {
  return (data == null || data.Length < length) 
    ? data 
    : data.Substring(0, length);
}

答案 3 :(得分:5)

字符串长度属性适用于C#:

[StringLength(150)]
public string MyProperty { get; set; }

答案 4 :(得分:2)

我认为你真的想要这个。

public static string LimitTo(this string data, int length) {
  return (data == null || data.Length <= length)   // Less than or equal to
    ? data 
    : data.Substring(0, length);
}

答案 5 :(得分:1)

字符串是不可变的,即使您可以创建一个按照您想要的方式工作的实例,只要您为变量指定另一个值,它就会是string类型的另一个实例。

如果你想要一个最多150个字符的string属性,那么写一个属性来检查setter中的值,如果超过150个字符则抛出异常。

如果你想要一个最多150个字符的方法的string参数,那么在方法的顶部,检查它是否超过150个字符,如果是,则抛出异常

答案 6 :(得分:1)

var a = description.Substring(0, description.Length > 150 ? 150 : description.Length);

答案 7 :(得分:1)

如果您的环境支持您使用以下方法,那将是一件好事。 (正如@christian-cody所建议的那样。)

sender()

您必须包含以下命名空间才能使用它。

void MainWindow::deleteThisLine()
{
    //sender(): QPushButton
    QWidget *w = qobject_cast<QWidget *>(sender()->parent());
    if(w){
        int row = ui->tableWidget->indexAt(w->pos()).row();
        ui->tableWidget->removeRow(row);
        ui->tableWidget->setCurrentCell(0, 0);
    }
}

答案 8 :(得分:1)

每个人似乎都在使这一过程变得复杂,您只需要简单地

var a = description;
if (description.length > 150) a = description.Substring(0, 150);

有时您只需要考虑问题。