尝试保持完全与语言无关,并避免使用Split()和Join()等内置方法,构建CSV字符串的最常用或最常用的方法是什么?我经常遇到这样的情况,我很好奇Split()这样的方法是如何实现的呢?我通常做这样的事情:
for(int i = 0; i < list.length; i++)
{
if(i == list.length - 1)
{
Write(list[i]);
}
else
{
Write(list[i] + ',');
}
}
但似乎应该有更好的方法来做到这一点。
答案 0 :(得分:3)
我见过的大多数实现更像是:
if (list.length > 0)
{
Write(list[0]);
for(int i = 1; i < list.length; i++)
{
Write(','); // Write separator character(s)
Write(list[i]);
}
}
这可以避免在for循环中进行检查。 .NET Framework的Join()方法使用这种基本方法(当然还有更多检查)。
答案 1 :(得分:0)
您可能不想使用Split,Join或任何简单的东西。如果您的值包含逗号或引号怎么办?
如果可能,请使用库。否则,如:
string escapeForCsv(string s) {
if s.contains("\",\n") {
needs_quotes = true
s.replace("\"", "\"\"")
}
if needs_quotes {
s = "\"" + s + "\""
}
return s
}
for (i := 0; i < array.length; i++) {
elt = array[i]
if i > 0 {
Write(',')
}
Write(escapeForCsv(elt))
}