本帖最后由 zjh2785 于 2018-4-15 07:29 编辑
这段代码可以转换混合型的文本到数值,例如数字+字母,数字+标点等等,从文本左边至右边起转换,直至遇见任何一个非数值字符;
+123.00(正数) 返回 123;
-123.00[负数] 返回-123;
.123【小数】 返回0.123
-
- /// <summary>
- /// 截取文本中包含的数值
- /// </summary>
- /// <param name="textString">包含数值的文本, 例如+123.00(总图)、 .123[备注]</param>
- /// <returns>返回123、0.123,无效文本返回0</returns>
- public double GetValue (string textString) {
- string str = string. Empty;
- bool tag = false;
- bool point = false;
- char [ ] split = textString. ToCharArray( );
- foreach (char c in split)
- {
- if (char. IsDigit(c))
- {
- str += c;
- }
- else if (c == '+' || c == '-')
- {
- if (tag == false)
- {
- str += c;
- tag = true;
- }
- else
- {
- break;
- }
- }
- else if (c == '.')
- {
- if (point == false)
- {
- str += c;
- point = true;
- }
- else
- {
- break;
- }
- }
- else
- {
- break;
- }
- }
- double result = 0f;
- try
- {
- result = double. Parse(str);
- }
- catch (Exception)
- { }
- return result;
- }
|