本文介绍了循环中创建的分隔字符串的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在寻找创建循环中另一个字符串的最佳方法.我的意思是,例如,SQL阅读器:
I'm searching the best way to create a string separated with another in a loop. I mean, for example, SQL reader:
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查询字符串;
or creating SQL query string;
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());
.我的一般想法不使用Remove
/LastIndexOf
!
. My general idea do not use Remove
/ LastIndexOf
!
推荐答案
除非您真的知道需要担心性能,否则我不喜欢StringBuilder.它产生难看的代码.我会这样写...
I am not a fan of StringBuilder unless you really know that you need to worry about performance. It produces ugly code. I would write it this way...
private IEnumerable<string> ReadAllStrings(DataReader reader)
{
while(reader.Read())
yield return reader[0];
}
String.Join("<br />", ReadAllStrings(reader).ToArray());
如果我经常这样做,我可能会考虑一种扩展方法:
If I were doing it a lot, I might consider an extension method:
public static class Extensions
{
public static string JoinWith(this IEnumerable<string> strings, string separator)
{
return String.Join(separator, strings.ToArray());
}
}
然后,我的代码如下所示:
Then, my code would look like this:
ReadAllStrings(reader).JoinWith("<br />");
这篇关于循环中创建的分隔字符串的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!