改进获取最后一个拆分部分的代码

时间:2009-02-25 10:41:28

标签: c#

也许在3.5 SP1中使用最新技术,有没有办法缩短它?

// Bruno: add the empty row with column names
// -- select [CRM5].[USERGROUP].[UserGroup_id], [CRM5].[USERGROUP].[name] AS [name]
if (col.ToLower().Contains("] as ["))
{
   // [CRM5].[USERGROUP].[name] AS [name]
   splitColumn.Clear();    // clear the list
   splitColumn.AddRange(col.Trim().Split(' '));
   emptyRow.Append(String.Format(" '' AS {0},", splitColumn[splitColumn.Count - 1]));
}
else
{
   // [CRM5].[USERGROUP].[UserGroup_id]
   splitColumn.Clear();    // clear the list
   splitColumn.AddRange(col.Trim().Split('.'));
   emptyRow.Append(String.Format(" '' AS {0},", splitColumn[splitColumn.Count - 1]));

}

换句话说,有没有办法在拆分时检索String的最后一个元素?

也许

col.Trim().Split('.').Find(x => x.LastItem);
  

col是一个字符串

     

splitColumn是一个List<字符串>

3 个答案:

答案 0 :(得分:2)

假设您已导入System.Linq:

var lastOrNull = "".Split(' ').LastOrDefault();

详细说明上面的代码片段......这就是诀窍:

col = (col ?? "").Split(new char[] { ' ' }, 
    int.MaxValue, StringSplitOptions.RemoveEmptyEntries)
        .LastOrDefault();

if (col != null)
{ 
    emptyRow.Append(String.Format(" '' AS {0},", col);
}

如果指定StringSplitOptions.RemoveEmptyEntries,则不需要Trim()。如果字符串为null或为空,则不会抛出上述代码。

答案 1 :(得分:0)

试试这个:

string last = col.Split('.').Last();

答案 2 :(得分:0)

如果由于其他原因不需要拆分结果数组,我会考虑将col.lastindexof('。')与substring方法结合使用。

由于-1表示返回'。'找不到:

col.substring(col.lastindexof('.')+1)