string dosage = "2/3/5 mg";
string[] dosageStringArray = dosage.Split('/');
int[] dosageIntArray = null;
for (int i = 0; i <= dosageStringArray.Length; i++)
{
    if (i == dosageStringArray.Length)
    {
        string[] lastDigit = dosageStringArray[i].Split(' ');
        dosageIntArray[i] = Common.Utility.ConvertToInt(lastDigit[0]);
    }
    else
    {
        dosageIntArray[i] = Common.Utility.ConvertToInt(dosageStringArray[i]);
    }
}


我在此行上遇到异常:dosageIntArray[i] = Common.Utility.ConvertToInt(dosageStringArray[i]);
我无法解决此问题。没有找到问题所在。但是此行int[] dosageIntArray = null;看起来可疑。任何帮助,将不胜感激。

例外:Object reference not set to an instance of an object.

最佳答案

解决方案的最大问题不是缺少数组声明,而是如何
您将解析以下代码:

string dosage = "2/13/5 mg";


由于您的问题肯定是特定于域的,因此可能不会出现这种情况,但是代表相同整数的两位数会有一些变化。

以下解决方案在正斜杠上拆分字符串,然后从子字符串中删除所有非数字,然后再将其转换为整数。

Regex digitsOnly = new Regex(@"[^\d]");
var array = dosage.Split('/')
                  .Select(num => int.Parse(digitsOnly.Replace(num, string.Empty)))
                  .ToArray();


或任何与可爱的Linq合成器类似的东西。

10-07 17:35