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