如何获得两个字符之间的所有文本,但选择的数字?

时间:2017-05-02 18:32:34

标签: c# string

所以我想要的只是:

输入:嘿“有”“随机”

我只想:

GetTextBetweenBrackets(string userinput, 2);

然后

输出:随机

static string GetTextBetweenBrackets(string text, int number)
{
    string Output = "";
    string[] split = text.Split(' '); 
    Output = split[number].Split('"', '"')[1];
    return Output;
}

该代码效果很好,但输入是:

输入:嘿“随机”“爱猫”

GetTextBetweenBrackets(string userinput, 2);

输出:没什么

2 个答案:

答案 0 :(得分:1)

这似乎对你有用(但你应该注意潜在的例外)

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

答案 1 :(得分:0)

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

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];
}

GetTextBetweenBrackets("Hey \"There random\" \"Love Cats\"", 2)返回“Love Cats”

使用此功能的一个原因是,如果您的引号之间还有其他文本,这仍然有效。 Ex GetTextBetweenBrackets("My \"Name\" is, well \"Earl\"", 2)将返回“Earl”并且工作,而其他解决方案将因为只关注一种类型的句子而失败。