/// <summary>
/// 分離提取字元串中的數字子串
/// </summary>
/// <param name="str">字元串</param>
/// <param name="lstNum">數字子串</param>
/// <returns></returns>
public static int SplitNumber(string str, out List<string> lstNum)
{//-3508.01,2065.02.--31..---
lstNum = new List<string>();
if (str == null || str == string.Empty) return -1;
StringBuilder sb = new StringBuilder();
bool point = false;
bool substract = false;
foreach (char c in str)
{
if (c >= '0' && c <= '9')
{
sb.Append(c);
}
else if(c == '.')
{
if(point == false)
{
// 第一次出現.
if(sb.Length > 0)
{
sb.Append(c);
point = true;
}
}
else
{
// 第二次出現.
lstNum.Add(sb.ToString());
sb.Clear();
point = false;
}
}
else if(c == '-')
{
if (substract == false)
{
// 第一次出現-, sb前面不應該有東西
if (sb.Length > 0)
{
lstNum.Add(sb.ToString());
sb.Clear();
}
sb.Append(c);
substract = true;
}
else
{
// 第二次出現.
if (sb.Length > 1)
{
lstNum.Add(sb.ToString());
}
sb.Clear();
substract = false;
}
}
else
{
lstNum.Add(sb.ToString());
point = false;
sb.Clear();
}
}
if(sb.Length > 0)
{
lstNum.Add(sb.ToString());
sb.Clear();
}
return 0;
}