.NET v4.5中的C#Substring()错误?

fle*_*sod 0 .net c# .net-4.5 asp.net-4.5

我有点疑惑为什么Substring()函数不能正常工作.它只是不会在字符串末尾删除逗号.

见下面的示例代码......

public static string OrderByClauseBuilder(string parmSortByColumn)
{
    if (parmSortByColumn.LastIndexOf(",") > -1) { 
        parmSortByColumn.Substring(0, parmSortByColumn.LastIndexOf(","));
    }
    return parmSortByColumn;
}
protected void Page_Load(object sender, EventArgs e)
{
    string sqlAsk = "";
    string value = "stocknumber asc,";

    sqlAsk = OrderByClauseBuilder(value);
}
Run Code Online (Sandbox Code Playgroud)

And*_*rei 7

字符串在.NET中是不可变的,并且每个字符串方法都返回一个新的,经过修改的方法.因此,您必须做一些调整:

public static string OrderByClauseBuilder(string parmSortByColumn)
{
    if (parmSortByColumn.LastIndexOf(",") > -1) { 
        parmSortByColumn = parmSortByColumn.Substring(0, parmSortByColumn.LastIndexOf(","));
    }
    return parmSortByColumn;
}
Run Code Online (Sandbox Code Playgroud)

  • +1.通常使用`return parmSortByColumn.TrimEnd(',');`,IMO会更容易.:) (3认同)
  • @ Trustme-I'maDoctor,实际上这两种方法是不同的.如果最后一个逗号不是字符串的最后一个字符,`Trim`将不会执行任何操作.它将适用于OP发布的情况,但一般来说它们会做不同的事情. (2认同)