方法,返回不同数据类型的多个值

时间:2016-02-25 23:25:04

标签: c# regex

我正在尝试返回正则表达式匹配的字符串数组stringArray以及关联的匹配match_count string_indexmatch_length。如何在方法返回中发送不同数据类型的多个不同值。我已经阅读了关于Tuple但是所有示例基本上都显示了多个值,但它们似乎总是整数而不是混合类型。我无法弄清楚如何在我的例子中使用它来实现字符串数组和整数。

    string ptrn_coords = @"- Coordinates: \[ ([\-0-9]+), ([\-0-9]+), ([\-0-9]+) \]";

    private void button3_Click(object sender, EventArgs e)
    {
        string[] matches;
        matches = GetMatches(s, ptrn_coords);
    }



    private static string[] GetMatches(string input, string pattern)
    {

        string[] stringArray;
        Match mc = Regex.Match(input, pattern);

        int string_index = 0;
        int match_length = 0;
        int match_count = 0;
        List<String> listTemp = new List<string>();
        while (mc.Success)
        {
            match_count++;
            string_index = mc.Index;
            match_length = mc.Length;               
            listTemp.Add(mc.ToString());

            //MessageBox.Show("Match Text: " + mc.ToString() + " Index: " + string_index + " Length: " + match_length + " Count: " + match_count); // Test Message

            mc = mc.NextMatch();
        }
        stringArray = listTemp.ToArray<String>();
        return stringArray;

    }

2 个答案:

答案 0 :(得分:2)

不确定要返回什么,如果要返回stringarray和matchcount等,可以简单地定义具有这些属性的类,然后返回此类的实例。

答案 1 :(得分:2)

元组是类型安全的,可以安全地返回原始类型和复杂类型的混合。这是一个例子:

void Main()
{
    var x = GetTuple();
    Console.WriteLine($"{x.Item1} {x.Item2} {x.Item3.GetType().Name}"); // Prints "string 5 MyClass"
}

....

public Tuple<string, int, MyClass> GetTuple()
{
    string myString = "string";
    int myInt = 5;
    MyClass myClass = new MyClass();
    return Tuple.Create(myString,myInt,myClass);
}