'string.Join(string,string [])'的最佳重载方法匹配有一些无效的参数

时间:2014-06-24 05:41:38

标签: c# regex

我想在两个标签之间提取文本。 " txtReadfile"包含许多标签。我想提取标签每次出现的所有文本。

我使用了以下代码。但是当我运行它时,它会给出错误:

Error # Error1 "The best overloaded method match for 'string.Join(string, string[])' has some invalid arguments"
Error #  "Argument '2': cannot convert from 'System.Collections.Generic.List<string>' to 'string[]' "

你能帮我调试一下吗?

List<string> destList = new List<string>();
string me = " <ts>(.*?)<t>";
string text =txtReadfile.Text;
foreach (Match match in Regex.Matches(text, me))
destList.Add(match.Groups[1].Value);
string output= string.Join(" ", destList);
MessageBox.Show(output);

4 个答案:

答案 0 :(得分:2)

在.NET 4之前,String.Join方法只有将数组作为第二个参数的重载。仅在.NET 4.0中引入了对IEnumerable<string>的支持。

// From .NET 2.0:
Join(String, String[])
Join(String, String[], Int32, Int32)
Join(String, Object[])

// From .NET 4.0:
Join(String, IEnumerable<String>)
Join<T>(String, IEnumerable<T>)

因此,如果您要定位较早的框架,则需要在列表中调用ToArray将其转换为string[]

string output= string.Join(" ", destList.ToArray());

答案 1 :(得分:1)

尝试:

string output = string.Join(" ", destList.ToArray());

答案 2 :(得分:1)

最有可能的是,您使用的是.NET 3.5或更低版本。在此版本string.Join中只有two overloads

您需要将列表转换为数组才能在此版本中传递它。

只需使用List<T>的{​​{3}}方法:

string.Join(" ", destList.ToArray());

答案 3 :(得分:0)

您必须将其转换为ToArray()

string.join(" ",destList.ToArray());