我正在尝试返回正则表达式匹配的字符串数组stringArray
以及关联的匹配match_count
string_index
和match_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;
}
答案 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);
}