C# 如何在c中用字符串中的多个倒逗号逐个拆分字符串#

C# 如何在c中用字符串中的多个倒逗号逐个拆分字符串#,c#,C#,如何拆分字符串,其中“where”是要拆分的字符串的一部分 string[] stringSeparator = new string[] {","}; while (!sr.EndOfStream) { string strline = sr.ReadLine(); string[] _values = strline.Split(stringSeparator, StringSplitO

如何拆分字符串,其中“where”是要拆分的字符串的一部分

         string[] stringSeparator = new string[] {","};
            while (!sr.EndOfStream) {
                string strline = sr.ReadLine();
                string[] _values = strline.Split(stringSeparator, StringSplitOptions.None);

                for (int entry = 0; entry < _values.Length; entry++) {
                    MessageBox.Show(_values[entry]);
                }
            }
string[]stringSeparator=新字符串[]{,“};
而(!sr.EndOfStream){
字符串strline=sr.ReadLine();
string[]_values=strline.Split(stringSeparator,StringSplitOptions.None);
对于(int entry=0;entry<\u values.Length;entry++){
MessageBox.Show(_值[输入]);
}
}
尝试使用“”,但它似乎返回整行,而不是其中的一部分

编辑:

要拆分的字符串(示例):

第一行:

“24446022020000000174234443”“印尼国家电力公司”“投资” 某物 2011-03-06、2011-03-07、2011-25,21

第二行:

“1”、“E”、“2011-03-04”、“2011-03-07”、“2011-03-07”、“1,00”、“0000000 10000001”、“UZNANIE” sdsd “长生不老药”“455550040000001244580001”“一些” 客户(E)KLIENT 编号:0000000 10000001“示例” “7311602244724600010000001”


如果要在字符串中表示文字引号,则需要对其进行转义(或在逐字字符串中将其加倍)

i、 e


至于为什么你得到了你所得到的价值,想想你打字的方式:

string[] stringSeparator = new string[] { "," };
是一个字符串数组,包含一个字符串,只有一个逗号
。它将被拆分,但您可能没有得到预期的值

string[] stringSeparator = new string[] { "","" };
是一个字符串数组,包含两个字符串,都是空(空)字符串。如果将其键入为:
newstring[]{“,”“};
,可能会更清晰。
Split()
函数忽略空字符串分隔符,因此不会拆分任何内容

string[] stringSeparator = new string[] { "\",\"" };
是一个字符串数组,包含一个字符串,双引号逗号双引号
,“
”。它应该可以获取字符串中
,“
之间的所有内容。

试试看

char[] delimiters = new char[] { ',', '"' };
string[] parts = value.Split(delimiters,
                 StringSplitOptions.RemoveEmptyEntries);

先修剪,然后分割以去除所有引号

string[] stringSeparator = new string[] {"\",\""};
while (!sr.EndOfStream) 
{

    //trim removes first and last quote since they are not removed by the split
    string line = sr.ReadLine().Trim('"');
    string[] values = line.Split(stringSeparator, StringSplitOptions.None);

    for (int index = 0; index < values.Length; index++)
        MessageBox.Show(values[index]);
}
string[]stringSeparator=新字符串[]{“\”,\“”};
而(!sr.EndOfStream)
{
//trim删除第一个和最后一个报价,因为它们不会被拆分删除
string line=sr.ReadLine().Trim(“”);
string[]值=line.Split(stringSeparator,StringSplitOptions.None);
for(int index=0;index
如果您给我们一个(简单的)字符串输入示例,以及您希望如何拆分它,我们会更清楚。我不知道您是想用双引号
分割字符串,还是用双引号、逗号、双引号
”,“
。看看你的例子,我在回答中提供了另一个代码。我已经给出了一条实现它的捷径。它经过了测试,并且工作正常。希望它能帮上忙。第一个选项让我在-25,21上有很多空白和bug,这是在不应该的时候分割的。第二个选项不起作用。抱怨“空白”或什么(编译器出错)。@MadBoy:编辑了答案。我给出了一条实现这一目标的捷径。它经过了测试,并且工作正常。希望它能帮上忙真的很短吗<代码>字符串[]字符串分隔符=新字符串[]{“\”,\”}似乎在一行中完成了这个技巧:-)@MadBoy:是的,但是你需要再次拆分成一个array@MadBoy:我添加了一个解释,解释了为什么您看到了您看到的价值观。希望你现在能更清楚。是的,现在清楚多了。我忽略了将“”视为两个单独的字符串。谢谢。现在我需要去掉一些“这不是我想要的东西:-)@MadBoy:那么这是否意味着您想删除结果中每个字符串的引号?您介意告诉我们您希望在结果中使用哪些字符串吗?例如,使用此代码,第一个示例中的前两个字符串将是
”24446022020000000174234443,“PLN”
“投资某物”
。您是否希望这些字符串为
24446022020000000174234443
PLN
投资某物
?嗯,我不需要这些字符串。我需要纯数据将其插入数据库。这些数据将从银行发送,似乎包括第一行(作为一种总结),所以我很可能会跳过第一行。看起来文本between“”是我所需要的,但当我尝试按拆分时,它只拆分了0,10或10,0,这是我需要的钱,不需要修改。拆分为“,”看起来不错,但我需要清理任何剩余的“,”因为我认为他们不会给我任何有用的东西。
string strline = sr.ReadLine();              
string[] abc = strline.Split('"');
abc = Array.FindAll(abc, val => val != ",").ToArray();
string result[] = Array.FindAll(abc, val => val != "").ToArray();
string[] stringSeparator = new string[] {"\",\""};
while (!sr.EndOfStream) 
{

    //trim removes first and last quote since they are not removed by the split
    string line = sr.ReadLine().Trim('"');
    string[] values = line.Split(stringSeparator, StringSplitOptions.None);

    for (int index = 0; index < values.Length; index++)
        MessageBox.Show(values[index]);
}