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合成器类似的东西。