foreach (object obj in args)
{
if (obj == null)//需過濾參數=null
{
continue;
}
else if (obj.ToString().Length == 38 && obj.ToString().IndexOf("-", 0, 10) == 9)
{
activityId = JsonConvert.DeserializeObject<guid>(obj.ToString());
break;
}
else if (obj.ToString().Length == 36 && obj.ToString().IndexOf("-", 0, 10) == 8)
{
activityId = Guid.Parse(obj.ToString());
break;
}
}
然後人家輸入一個剛好長度 38的字串,第一個 - 又剛好在第十個字元 就死了
原本我是想到用 regular expression做檢核
想了一串的 regex
Regex regGuid = new Regex("[{(]?[a-zA-Z0-9]{8}-[a-zA-Z0-9]{4}-[a-zA-Z0-9]{4}-[a-zA-Z0-9]{4}-[]{12}[})]?");
後來看到別人提供的做法
foreach (object obj in args)
{
if (obj == null)
{
continue;
}
else if (Guid.TryParse(obj.ToString(), out activityId))
{
break;
}
}
只是要注意 tryparse失敗的話 guid會被填成 Guid.Empty