Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/22.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 - Fatal编程技术网

C# 如何获得两个字符之间的所有文本,但使用选定的数字?

C# 如何获得两个字符之间的所有文本,但使用选定的数字?,c#,string,C#,String,所以我想要的就是: 输入:Hey“There”“Random” 我只想: GetTextBetweenBrackets(string userinput, 2); 然后 输出:随机 static string GetTextBetweenBrackets(string text, int number) { string Output = ""; string[] split = text.Split(' '); Output = split[number].Spli

所以我想要的就是:

输入:Hey“There”“Random”

我只想:

GetTextBetweenBrackets(string userinput, 2);
然后

输出:随机

static string GetTextBetweenBrackets(string text, int number)
{
    string Output = "";
    string[] split = text.Split(' '); 
    Output = split[number].Split('"', '"')[1];
    return Output;
}
该代码运行良好,但如果输入为:

输入:嘿,“有随机的”“爱猫”


输出:没有什么

这似乎适合您(但您应该注意潜在的异常)

然后


使用正则表达式查找一个引号,获取文本,直到下一个引号生成匹配,然后可以通过索引到结果列表中来获得正确的匹配

static string GetTextBetweenBrackets(string text, int number)
{

     return Regex.Matches(text, @"\x22([^\x22]+)\x22") // \x22 is the hex escape for "
                 .OfType<Match>()
                 .Select(mt => mt.Value)
                 .ToList()
                 [number - 1];
}
静态字符串GetTextBetweenBackets(字符串文本,整数)
{
return Regex.Matches(文本,@“\x22([^\x22]+)\x22”)/\x22是“”的十六进制转义符
第()类
.选择(mt=>mt.Value)
托利斯先生()
[数字-1];
}
getTextBetweenBackets(“嘿\“There random \”“Love Cats\”,2)
返回“Love Cats”



使用这种方法的一个原因是,如果引号之间有其他文本,这种方法仍然有效。例如,
getTextBetweenBackets(“我的名字”是“Earl”,2)
将返回“Earl”并起作用,而其他解决方案将因只关注一种类型的句子而失败。

不要在空格上拆分:
Output=text.split(“,”“)[编号-1]似乎对我有用。编辑:我认为拆分重载并没有达到您预期的效果,它相当于
Output=text.split(“”)[number-1];
。您实现的与您告诉的不同。您告诉:“在两个字符之间获取文本”。您实现的:“在空格处拆分文本”“。如果你想实现你所说的,它可能会起作用。为什么你要将双引号传递给
Split
两次呢。它只需要在那里一次?是“获取两个字符之间的所有文本”真的,真的是你试图解决的问题吗?我这样问是因为你的文本中没有括号,第二个引号之间的“所有文本”都是“爱猫”,而不是你所说的“爱”。这个问题也是XY问题的核心;也就是说,你问的是你试图解决的问题,而没有提到你试图解决的问题。我需要一种方法来知道两个引号之间的第一个文本和两个引号之间的第二个文本
static string GetTextBetweenBrackets(string text, int number)
{
    return text.Split('"').Skip(2*number-1).First();
}
var result0 = GetTextBetweenBrackets("Hey \"There\" \"Random\"", 2);           //Random
var result1 = GetTextBetweenBrackets("Hey \"There random\" \"Love Cats\"", 2); //Love Cats
static string GetTextBetweenBrackets(string text, int number)
{

     return Regex.Matches(text, @"\x22([^\x22]+)\x22") // \x22 is the hex escape for "
                 .OfType<Match>()
                 .Select(mt => mt.Value)
                 .ToList()
                 [number - 1];
}