我正在寻找在循环中创建与另一个字符串分隔的字符串的最佳方法。我的意思是,例如,SQL 阅读器:
StringBuilder sb = new StringBuilder();
while(reader.Read())
{
sb.Append(reader[0]);
sb.Append("<br />");
}
string result = sb.ToString();
result = result.Remove(result.LastIndexOf("<br />")); // <-
或创建 SQL 查询字符串;
StringBuilder sb = new StringBuilder();
foreach(string v in values)
{
sb.Append(v);
sb.Append(",");
}
string query = sb.ToString()
query = query.Remove(query.LastIndexOf(",")); // <-
query = String.Concat("INSERT INTO [foo] ([bar]) VALUES(", query, ")");
这是我发现的最好的:
List<string> list = new List<string>;
while(reader.Read())
{
list.Add(reader[0]);
}
string result = String.Join("<br />", list.ToArray());
编辑: 我知道 。我的一般想法是不要使用 StringBuilder
,为了清楚起见,我没有在这里使用它Remove
/LastIndexOf
!
最佳答案
我不是 StringBuilder 的粉丝,除非你真的知道你需要担心性能。它会产生难看的代码。我会这样写...
private IEnumerable<string> ReadAllStrings(DataReader reader)
{
while(reader.Read())
yield return reader[0];
}
String.Join("<br />", ReadAllStrings(reader).ToArray());
如果我经常这样做,我可能会考虑一种扩展方法:
public static class Extensions
{
public static string JoinWith(this IEnumerable<string> strings, string separator)
{
return String.Join(separator, strings.ToArray());
}
}
然后,我的代码将如下所示:
ReadAllStrings(reader).JoinWith("<br />");
关于c# - 在循环中创建的分隔字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/654054/