Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/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# 从由分隔符分隔的字符串中检索特定字符_C#_String_Delimiter - Fatal编程技术网

C# 从由分隔符分隔的字符串中检索特定字符

C# 从由分隔符分隔的字符串中检索特定字符,c#,string,delimiter,C#,String,Delimiter,我想检索由特定分隔符分隔的字符 例如: 这里,我想访问“”分隔符之间的字符串。但是我想要第二组介于“”之间的字符 我怎么能得到这个? 我知道我们可以用split。但有时字符串可能不以“character”开头 有人能帮我吗 string valueStr = "abc\"def\"ghi\"jklm"; var result = valueStr.Split('"')[2]; Console.WriteLine(result); 显然,在访问数组元素之前要检查它们 显然,在访问数组元素之前

我想检索由特定分隔符分隔的字符

例如:

这里,我想访问“”分隔符之间的字符串。但是我想要第二组介于“”之间的字符

我怎么能得到这个? 我知道我们可以用split。但有时字符串可能不以“character”开头

有人能帮我吗

string valueStr = "abc\"def\"ghi\"jklm";
var result = valueStr.Split('"')[2];
Console.WriteLine(result);

显然,在访问数组元素之前要检查它们


显然,在访问数组元素之前先检查它们

您只需找到第一个引号,然后从那里使用您的方法:

var firstQuote = str.IndexOf('"');

var startsWithQuote = str.Substring(firstQuote);

您只需找到第一个报价,然后使用您的方法:

var firstQuote = str.IndexOf('"');

var startsWithQuote = str.Substring(firstQuote);

您可以使用正则表达式来匹配它们:

        var test = "abc\"def\"ghi\"jklm";
        var test2 = "\"hello\" yes \"world\"";

        var match1 = Regex.Matches(test, ".+\"(.+)\"");
        var match2 = Regex.Matches(test2, ".+\"(.+)\"");

        Console.WriteLine("Match1: " + match1[0].Groups[1].Captures[0]);
        Console.WriteLine("Match2: " + match2[0].Groups[1].Captures[0]);
        // Match1: ghi
        // Match2: world

您可以使用正则表达式来匹配它们:

        var test = "abc\"def\"ghi\"jklm";
        var test2 = "\"hello\" yes \"world\"";

        var match1 = Regex.Matches(test, ".+\"(.+)\"");
        var match2 = Regex.Matches(test2, ".+\"(.+)\"");

        Console.WriteLine("Match1: " + match1[0].Groups[1].Captures[0]);
        Console.WriteLine("Match2: " + match2[0].Groups[1].Captures[0]);
        // Match1: ghi
        // Match2: world


似乎没有模式。如果ghi是第一个,那么它是b/w第二个和第三个引号。如果world是第二个,那么它是b/w第三个和第四个引号。似乎不清楚“第二组字符”是什么意思。如果只有一个引号是分隔符,那么第二个输出应该是“是”“根据‘但是我想要第二组字符’即使在第一行,第二个值也是
def
,而不是
ghi
。如果你想要第三组角色,你所问的会有意义。不,ghi有意义,它是引号内的第二组。abc不在其中,所以def是第一个。我想要第二组带有引号的字符。对于第一行,ghi在引号内。因为第二行的世界在引用中。似乎没有模式。如果ghi是第一个,那么它是b/w第二和第三个引号。如果说世界排名第二,那就是b/w第三和第四名。似乎不清楚“第二组字符”的含义。如果只有一个引号作为分隔符,则第二个输出应为“是”,根据“但我需要第二组字符”,即使在第一行,第二个值是
def
,而不是
ghi
。如果你想要第三组角色,你所问的会有意义。不,ghi有意义,它是引号内的第二组。abc不在其中,所以def是第一个。我想要第二组带有引号的字符。对于第一行,ghi在引号内。因为第二行世界在报价中。这通过了第一个示例,但第二个示例失败。如果我错了,请纠正我,但在第二个输出中,这将返回“是”,而不是OP所说的“世界”。现在您的小提琴是对的,但不是请求的输出。是的,如果您想要第二组,则它将显示“是”。正如你之前提到的,我同意你的观点,他的模式不匹配……除非我没有抓住这里的要点,否则你的答案几乎是正确的,但会返回第三个字符串而不是第二个字符串。这通过了第一个示例,但第二个示例失败。如果我错了,请纠正我,但在第二个输出中,这将返回“是”,而不是OP所说的需要的,“世界”。现在您的小提琴是正确的,但不是要求的输出。是如果您想要第二组,它将显示“是”。正如你之前提到的,我同意你的观点,他的模式不匹配……除非我没有抓住这里的要点。实际上,你的答案几乎有效,但会返回第三个字符串,而不是第二个字符串。什么方法?OP没有一种方法。OP将他的问题描述为有时字符串中的第一个字符不是“字符串”,因此使用string.Split()可以为他做不同的事情。因此,我为他提供了一种在“什么方法”之前修剪字符的方法?OP没有办法。OP将他的问题描述为有时没有“作为字符串中的第一个字符,因此使用string.Split()可以为他做不同的事情。因此,我为他提供了一种方法,在