سؤال

لماذا أتلقى هذا الخطأ؟

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 (بارامس شار [])" لديها بعض الحجج الباطلة F: ... \ ParameterParser.cs

هل كانت مفيدة؟

المحلول

إذا كنت تريد تمرير صفيف سلاسل، لديك للقيام بذلك بشكل واضح:

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

وأظن كنت نماذج التعليمات البرمجية على شيء مثل هذا:

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

وهذا يستخدم <م> المعلمة مجموعة (المعدل params في C #). صفائف المعلمة لا تنطبق إلا للمعلمة النهائية، وليس الزائد من String.Split يأخذ params string[]. هذا هو السبب في أنها لا تعمل بالنسبة لك.

ملحوظة أنني قمت بتغيير سلاسل في سلسلة حرفية بسيطة - أنصح فقط باستخدام سلسلة حرفية الحرفية عندما كنت في الواقع بحاجة إلى

.

نصائح أخرى

و @"(" @ "=" @ "،" @ "<>" ليست سلسلة واحدة أو حرف [] مجموعة

وجرب هذا:

string[] strs = queryString.Split(new string[] {@"(", @"=",@",",@"<>" },StringSplitOptions.None);
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top