Language agnostic 从数组中输出CSV字符串最被接受/使用的方法是什么?
试图保持完全的语言不可知性,避免使用诸如Split()和Join()之类的内置方法,构建CSV字符串最常用或被接受的方法是什么?我经常遇到这样的情况,我很好奇像Split()这样的方法是如何实现的?我通常会这样做:Language agnostic 从数组中输出CSV字符串最被接受/使用的方法是什么?,language-agnostic,Language Agnostic,试图保持完全的语言不可知性,避免使用诸如Split()和Join()之类的内置方法,构建CSV字符串最常用或被接受的方法是什么?我经常遇到这样的情况,我很好奇像Split()这样的方法是如何实现的?我通常会这样做: for(int i = 0; i < list.length; i++) { if(i == list.length - 1) { Write(list[i]); } else { Write(list[i
for(int i = 0; i < list.length; i++)
{
if(i == list.length - 1)
{
Write(list[i]);
}
else
{
Write(list[i] + ',');
}
}
for(int i=0;i
但似乎应该有更好的方法来实现这一点。我看到的大多数实现更像:
if (list.length > 0)
{
Write(list[0]);
for(int i = 1; i < list.length; i++)
{
Write(','); // Write separator character(s)
Write(list[i]);
}
}
if(list.length>0)
{
写入(列表[0]);
for(int i=1;i
这避免了for循环内部的检查。.NET Framework的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))
}
字符串转义forcsv(字符串s){
如果s.包含(“\”,\n”){
需要加引号=真
s、 替换(“\”,“\”\”)
}
如果需要报价{
s=“\”“+s+”\“”
}
返回s
}
对于(i:=0;i0{
写入(',')
}
写(escapeForCsv(elt))
}
为什么要问?你反对分裂和加入?在大多数现代语言中都可以使用这种方式。不反对拆分和联接,我一直在使用它们。我只是好奇它们通常是如何实现的。这让我想起了大学一年级我不得不做这种事情的时候,这似乎是一个老师可能会问的有点普通的问题,但我从来都不知道“官方”的方法。这正是我想要的,谢谢!