也许在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<字符串>
答案 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)