Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#-我是否应该使用子字符串获取单个csv行中的第二个值?_C#_C# 4.0_Ssis_Substring - Fatal编程技术网

C#-我是否应该使用子字符串获取单个csv行中的第二个值?

C#-我是否应该使用子字符串获取单个csv行中的第二个值?,c#,c#-4.0,ssis,substring,C#,C# 4.0,Ssis,Substring,如何使用C#返回下面逗号分隔值行中的第二个值 “ABC”,2016年3月31日0:00:00,“0020”,“1003802877”,“5.89”,1 我已经将上述字符串加载到SSIS中的变量中。我使用C#将单行加载到变量中 因为变量中已经有了子字符串函数,所以对字符串使用子字符串函数会更容易吗?还是应该使用其他函数来解析csv行,然后只返回第二个值(2016年3月31日0:00:00) 使用 请注意,为了向您展示这个示例,我在双引号之前添加了转义字符。如果输入字符串来自CSV文件,则这些转义不

如何使用C#返回下面逗号分隔值行中的第二个值

“ABC”,2016年3月31日0:00:00,“0020”,“1003802877”,“5.89”,1

我已经将上述字符串加载到SSIS中的变量中。我使用C#将单行加载到变量中

因为变量中已经有了子字符串函数,所以对字符串使用子字符串函数会更容易吗?还是应该使用其他函数来解析csv行,然后只返回第二个值(2016年3月31日0:00:00)

使用

请注意,为了向您展示这个示例,我在双引号之前添加了转义字符。如果输入字符串来自CSV文件,则这些转义不是必需的(也不存在)

也可以使用string.IndexOf和string.Substring,但与简单的string.Split相比,这实在太复杂了

int pos = input.IndexOf(',');
if (pos > 0)
{
    int pos2 = input.IndexOf(',', pos+1);
    if(pos2 < 0) pos2 = input.Length;
    Console.WriteLine(input.Substring(pos+1, pos2 - (pos+1)));
}
intpos=input.IndexOf(',');
如果(位置>0)
{
int pos2=input.IndexOf(',',pos+1);
如果(pos2<0)pos2=input.Length;
控制台写入线(输入子字符串(pos+1,pos2-(pos+1));
}
使用

请注意,为了向您展示这个示例,我在双引号之前添加了转义字符。如果输入字符串来自CSV文件,则这些转义不是必需的(也不存在)

也可以使用string.IndexOf和string.Substring,但与简单的string.Split相比,这实在太复杂了

int pos = input.IndexOf(',');
if (pos > 0)
{
    int pos2 = input.IndexOf(',', pos+1);
    if(pos2 < 0) pos2 = input.Length;
    Console.WriteLine(input.Substring(pos+1, pos2 - (pos+1)));
}
intpos=input.IndexOf(',');
如果(位置>0)
{
int pos2=input.IndexOf(',',pos+1);
如果(pos2<0)pos2=input.Length;
控制台写入线(输入子字符串(pos+1,pos2-(pos+1));
}

在您的情况下,性能是否重要?你有很大的弦吗?您是否在循环中执行此逻辑

Split非常快,但它必须遍历整个字符串
IndexOf
(带子字符串)仅在第一次出现时停止。因此,如果您在循环中执行此操作,并且中断了一半以上的时间,那么请使用
Substring
IndexOf

int indexStart = csv.IndexOf(',');
int indexEnd = indexStart < 0 ? 0 : csv.IndexOf(',', indexStart + 1);

string result = null;

if(indexEnd > 0)
    result = csv.Substring(indexStart + 1, indexEnd - indexStart - 1);
int indexStart=csv.IndexOf(',');
int indexEnd=indexStart<0?0:csv.IndexOf(',',indexStart+1);
字符串结果=null;
如果(indexEnd>0)
结果=csv.Substring(indexStart+1,indexEnd-indexStart-1);

在您的情况下,性能是否重要?你有很大的弦吗?您是否在循环中执行此逻辑

Split非常快,但它必须遍历整个字符串
IndexOf
(带子字符串)仅在第一次出现时停止。因此,如果您在循环中执行此操作,并且中断了一半以上的时间,那么请使用
Substring
IndexOf

int indexStart = csv.IndexOf(',');
int indexEnd = indexStart < 0 ? 0 : csv.IndexOf(',', indexStart + 1);

string result = null;

if(indexEnd > 0)
    result = csv.Substring(indexStart + 1, indexEnd - indexStart - 1);
int indexStart=csv.IndexOf(',');
int indexEnd=indexStart<0?0:csv.IndexOf(',',indexStart+1);
字符串结果=null;
如果(indexEnd>0)
结果=csv.Substring(indexStart+1,indexEnd-indexStart-1);

有一个string.Split方法可以在arraystring[]array=string.Split(',')中转换字符串;如果第一列可以包含可以有逗号的值,那么您需要进行特殊的解析以忽略双引号中的逗号。否则,查找第一个和第二个逗号的
Substring
IndexOf
string.Split
。有一个string.Split方法可以在arraystring[]array=string.Split(',')中转换字符串;如果第一列可以包含可以有逗号的值,那么您需要进行特殊的解析以忽略双引号中的逗号。否则,
Substring
IndexOf
可以找到第一个和第二个逗号,或者
string.Split
。您也可以尝试以下操作:
string str=“\'ABC\”,3/31/2016 0:00:00,\'0020\,\'1003802877\,'5.89\,1”;字符串res=str.Split(',')[1];控制台写入线(res)(输入字符串,如@Steve所示)您也可以尝试以下操作:
string str=“\'ABC\”,2016年3月31日0:00:00,\'0020\,\'1003802877\,\'5.89\',1”;字符串res=str.Split(',')[1];控制台写入线(res)(输入字符串,如@Steve所示)不,只需对文件的第一行进行简单的1次检查即可获取第二个值,但感谢您分享此方法,因为我相信它很快就会派上用场。不,只需对文件的第一行进行简单的1次检查即可获取第二个值,但感谢您分享此方法,因为我相信它很快就会派上用场。