سؤال
لماذا أتلقى هذا الخطأ؟
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);
لا تنتمي إلى StackOverflow