Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/292.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#使用一些分隔符和分隔符拆分字符串_C#_Arrays_String_Split - Fatal编程技术网

c#使用一些分隔符和分隔符拆分字符串

c#使用一些分隔符和分隔符拆分字符串,c#,arrays,string,split,C#,Arrays,String,Split,虽然有很多关于字符串拆分的帖子,但我找不到解决问题的方法。 我需要将字符串拆分为数组,但该字符串在某些字段上有分隔符(通常是带有分隔符的值) 字符串看起来像: 约翰:“2016/10/15”:“15:20:14”:“经理” 如果我跑步: string[] items = line.Split(':'); 它将字符串拆分为6个项目,而实际上应该只有4个项目 Split函数可以用什么方法处理这个问题 编辑: 这6项是: John 2016/10/15 "15 20 14" "Manager" 我

虽然有很多关于字符串拆分的帖子,但我找不到解决问题的方法。 我需要将字符串拆分为数组,但该字符串在某些字段上有分隔符(通常是带有分隔符的值)

字符串看起来像:

约翰:“2016/10/15”:“15:20:14”:“经理”

如果我跑步:

string[] items = line.Split(':');
它将字符串拆分为6个项目,而实际上应该只有4个项目

Split函数可以用什么方法处理这个问题

编辑: 这6项是:

John
2016/10/15
"15
20
14"
"Manager"

我希望时间(15:20:14)是一项。

我想你需要一个有两种状态的解析器:内引号和外引号


存在类似的库,可以针对分隔符(
)和引号字符(
)进行配置甚至是引号字符如何转义。

因为第一个元素没有用引号包装,所以它在进行清晰的拆分时会遇到麻烦。如果您不想使用第三方库,这是在做一些假设,因为我不知道在您的情况下什么类型的输入字符串是有效的,也就是说,如果第一个元素只是结肠

public void GetElements()
    {
        var delimiter = ":";
        var myStr = "John:\"2016/10/15\":\"15:20:14\":\"Manager\"";

        //Split on quotes and remove elements from the array that are the delimter
        var elementArray = myStr.Split(new [] { '"'}, StringSplitOptions.RemoveEmptyEntries);
        elementArray = elementArray.Where(x => x != delimiter).ToArray();

        //Scrub the first element to remove the delimiter
        var firstElement = elementArray.ElementAt(0);
        elementArray[0] = firstElement.Remove(firstElement.Length - 1);

        foreach(var element in elementArray) Console.WriteLine(element);

        Console.ReadKey();
    }
这方面的假设是:

  • 字符串中的第一个“元素”将始终展开
  • 字符串上的任何其他元素都将遵循当前的分隔样式,例如
    John:“2016/10/15”:“15:20:14”:“Manager”:“我的新字符串”
  • 空元素不需要保留

  • 拆分后的结果是什么?6项是什么?我认为
    split
    不够。也许你应该试试正则表达式?在我看来,它在每个冒号上都会拆分。你到底想得到什么?split函数是如何删除引号的?这6项是错误的。@CameronCastillo-你是如何存储doubl的字符串中的e引号?转义字符在哪里?