将长 CSV 字符串拆分为多个字符串变量

本文关键字:字符串 变量 拆分 CSV 将长 | 更新日期: 2023-09-27 18:31:30

我有一个很长的CSV字符串,最大长度为44,119个字符。我有一个接受 1 到 6 个参数的 SQL 存储过程,每个参数varchar(8000)这样将长 CSV 划分为多个参数并将其传递给存储过程。

我的存储过程工作正常,但是如何将长 CSV 划分为不同的字符串变量,使它们不超过 8000 个字符的字符串长度?

例如:

string myLongCSV = "1,2,345,5674,234,22,34..." //a long CSV

我不能使用SubString (0, 8000)因为第 8,000 个字符可能会破坏长 CSV 中的数字而不是逗号。

我想用 C# 编写代码,使其将长 CSV 中的所有数字划分为不同的字符串变量,使每个变量长度不超过 8000 个字符。

将长 CSV 字符串拆分为多个字符串变量

如果

可以,请修改 SQL 存储过程以使用数据类型为 VACHAR(MAX) 的单个参数,因为这最多存储 2,147,483,647 个字符。

如果不能,请使用String.Split函数,如下所示:

string[] words = myLongCSV.Split(',');
foreach (string word in words)
{
    // some logic here to construct your parameters and check their length.
}

试试这个。

这个想法是获取第 8,000 个字符,如果它是一个数字,则减小索引直到它是 ',',此时您可以执行以下操作Substring(),如下所示:

string s = "123,45636...";      
int index = 7;
while (true)
{
    if (s[index] == ',')
    {
        s = s.Substring(0, index);
        break;
    }
    else
    {
        index--;
    }
}