字符串的多方式预处理

抽空期间写了一个 药费帐户统计系统 因为使用对象是母亲大人 所以再输入费用一栏中 经常会出现一些预想不到的情况 :
18.35 会被输入成
18。35
18.3。5
18。 35
18,35
18,35
非单个正确位置的数学小数点符号,而出现大量 1. 2。3, 4,  这4个符号,还有在18.35各种位置出现未知数量的空格情况,导致数据类型不匹配的报错。
0.45 会被输入成
.45
。45
,45
,45     当然也可能有空格在其中。

为解决这个问题只好对输入的内容进行不是足够安全的预处理(抛出异常提示,对于母亲基本等于没用)
using System.Text.RegularExpressions;
public static string changedecimal(string str1)
        {

           
            str1 = str1.Trim();
            str1 = Regex.Replace(str1, @" * ", "");//对空格做了处理所有的空格都被去掉了
          
            string str4 = "";//原先的方法出了问题,这里不高心重新改所有相关变量名了,所以就用了str4
            for (int i = 0; i < str1.Length; i++)//将所有的不需要的(这里是标点符号||标点逗号||逗号)符号替换为句号
            {
                if (str1[i].ToString() == "." || str1[i].ToString() == ","||str1[i].ToString() == ",")
                    str4 = str4 + "。";
                else
                    str4 = str4 + str1[i];
            }
           
            string str2 = "";

            for (int i = 0, once = 0; i < str4.Length; i++)//注意这里多了个once变量,功能只保留第一个出现的句号
            {


                if (once == 1)
                {
                    for (int j = i; str4[j].ToString() == "。";j++ )
                    {

                        i = j + 1;

                    }
                   
                }
              
                    if (str4[i].ToString() == "。")
                    {

                        once = 1;
                       
                    }

                    str2 = str2 + str4[i];
               


            }
           
            string str3 = "";
            for (int i = 0; i < str2.Length; i++)//将以句号为首的字符串自动前面补0
            {
                if (i == 0)
                {
                    if (str2[0].ToString() == "。" )
                    { str3 = "0"; }
                }

                if (i >= 0)
                {
                    if (str2[i].ToString() == "。" )
                    {

                        str3 = str3 + ".";
                    }
                    else
                    { str3 = str3 + str2[i]; }
                }

            }
          return str3;
        }

这样 str3 就是经过处理后的字符了。
不安全地方在于如果一个数是135.45 被输入成 13.5.45会变成13.545
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值