C# 无法从字符串末尾修剪
执行以下操作时:C# 无法从字符串末尾修剪,c#,string,trim,C#,String,Trim,执行以下操作时: foreach (String fromList in columns) { query += "`" + fromList + "`,"; } query.TrimEnd(','); 未从字符串中删除逗号 我做错了什么?TrimEnd返回新字符串。你需要: query = query.TrimEnd(','); TrumEnd返回一个字符串。是否将其分配给变量?字符串是不可变的。如果要在应用TrimEnd后获得结果,必须将该结果指定给变量: foreach (St
foreach (String fromList in columns)
{
query += "`" + fromList + "`,";
}
query.TrimEnd(',');
未从字符串中删除逗号
我做错了什么?
TrimEnd
返回新字符串。你需要:
query = query.TrimEnd(',');
TrumEnd返回一个字符串。是否将其分配给变量?字符串是不可变的。如果要在应用
TrimEnd
后获得结果,必须将该结果指定给变量:
foreach (String fromList in columns)
{
query += "`" + fromList + "`,";
}
query = query.TrimEnd(',');
在这里,我把它重新分配给它自己
当然,最好是这样:
query = String.Join(",",fromList.Select(a=>"`" + a + "`"));
不要使用循环+编辑。使用以下示例:
var trimmed = query.TrimEnd(',');
Console.WriteLine(trimmed);
应该是
foreach (String fromList in columns)
{
query += "`" + fromList + "`,";
}
query = query.TrimEnd(',');
字符串是不可变的,因此需要存储TrimEnd的返回值
query = query.TrimEnd(',');
尽管有一种更简单的方法:
var query = String.Join(",", columns.Select(fromList => String.Format("`{0}`", fromList)));
那奏效了,谢谢你。我想知道为什么Visual Studio 2010没有指出任何错误。@user1600684,因为您对
TrimEnd
的调用是有效的。无论您是否对结果进行了操作,VS通常不会警告您。为什么您会期望出现错误?您的代码没有语法错误。使用串联生成查询。有时是必要的,通常是错误的。当然,解决这个问题的一般方法是在要连接在一起的每个字符串之间插入分隔符。首先用``字符包装每个字符串要稍微复杂一些,但通常还是比构建一个完整的字符串,然后重新修改它以删除字符更好的选择。只需注意,.net 3.5Ah中的lambda需要一个.ToArray(),是的,我忘了这一点。只有.NET 4及更高版本具有直接接受IEnumerable
的字符串.Join。