修剪C#.Net应用程序中的字符串

时间:2017-03-28 13:13:35

标签: c# asp.net asp.net-mvc

足够新的C#。

只是不能用绳子修剪我的头。我希望能够修剪字符串之后的空白,因为它弄乱了我的数据库,我得到的空白量。这是我想要的其中一个实体。

[RegularExpression(@"^[a-zA-Z0-9 ]+$", ErrorMessage = "Use letters and numbers only please")]
[Display(Name = "Serial Number ")]
public string SerialNo
{
    get
    {
        try
        {
            string serialNumber = SerialNo.Trim();
            return serialNumber;
        }
        catch (Exception e)
        {
            Console.WriteLine(e);
            return SerialNo;
        }
    }
    set
    {
        this.SerialNo = SerialNo;
    }
}

我不知道我是否认为这一切都是错的,所以一些帮助将不胜感激!

编辑:我的错误是"未处理的类型' System.StackOverflowException'发生在PhotocopierInformationManagementServices.dll"

4 个答案:

答案 0 :(得分:7)

以下内容将以 stackoverflow excption 结束,因为它将继续无限执行,因为this.SerialNo=块内的set会再次调用set block:

set
{
    this.SerialNo = SerialNo; // calling set of SerialNo recursively
}

您可以将代码更改为:

private string _serialNo;
[RegularExpression(@"^[a-zA-Z0-9 ]+$", ErrorMessage = "Use letters and numbers only please")]
[Display(Name = "Serial Number ")]
public string SerialNo
{
    get
    {
        try
        {
            _serialNo= _serialNo.Trim();
            return _serialNo;
        }
        catch (Exception e)
        {
            Console.WriteLine(e);
            return _serialNo;
        }
    }
    set
    {
        _serialNo= value;
    }
}

但我建议在setter中修剪它,以便你的属性看起来像:

private string _serialNo;
[RegularExpression(@"^[a-zA-Z0-9 ]+$", ErrorMessage = "Use letters and numbers only please")]
[Display(Name = "Serial Number ")]
public string SerialNo
{
    get
    {
        return _serialNo;
    }
    set
    {
        _serialNo= value?.Trim();
    }
}

答案 1 :(得分:2)

您使用C#属性错误。用我的例子:

private string serialNumber;

public string SerialNo
{
    get { return serialNumber; }
    set { serialNumber = value?.Trim(); }
}

答案 2 :(得分:1)

问题不在于修剪,而是在set上你递归地调用get。正确的语法是

private string serialNo;

[RegularExpression(@"^[a-zA-Z0-9 ]+$", ErrorMessage = "Use letters and numbers only please")]
[Display(Name = "Serial Number ")]
public string SerialNo
{
    get
    {
        return serialNo;
    }
    set
    {
        this.serialNo = value.Trim();
    }
}

答案 3 :(得分:0)

您是否尝试过string serialNumber = SerialNo.TrimEnd();?

如果不起作用,请尝试使用SerialNo.Replace(“”,“”);