String Split() - 方法

时间:2009-08-01 11:22:39

标签: c#-2.0

为什么我收到此错误?

public class ParameterParser
{
    public List<string> ParseParameter(string queryString)
    {
        queryString = queryString.Replace(" ", "");

        string[] strs = queryString.Split(@"(", @"=", @",", @"<>", 
                                          StringSplitOptions.None);

        List<string> parameters = new List<string>();

        foreach (string ss in strs)
        {
            string s = ss.Trim(')');

            if (s.StartsWith("@") && !s.Equals("") && s!=null)
            {
                parameters.Add(s.Replace(" ", ""));
            }
        }

        return parameters;
    }
}

错误3'string.Split(params char [])'的最佳重载方法匹配有一些无效的参数F:... \ ParameterParser.cs

2 个答案:

答案 0 :(得分:6)

如果要传递字符串数组,则必须明确地执行此操作:

string[] strs = queryString.Split(new string[] {"(", "=", ",", "<>"}, 
                                  StringSplitOptions.None);

我怀疑你是在用这样的东西建模你的代码:

string[] strs = queryString.Split('(', '=', ',');

这是使用参数数组(C#中的params修饰符)。参数数组仅适用于最终参数,String.Split的重载不需要params string[]。这就是为什么它不适合你。

请注意,我已将字符串更改为简单的字符串文字 - 我建议您在实际需要时仅使用逐字字符串文字。

答案 1 :(得分:0)

@“(”,@“=”,@“,”,@“&lt;&gt;”不是单个字符串或char []数组

试试这个:

string[] strs = queryString.Split(new string[] {@"(", @"=",@",",@"<>" },StringSplitOptions.None);