如何使用C#Regex从字符串中删除额外的点空格以构建小数?

时间:2013-01-04 21:31:27

标签: c# regex string decimal-point

INPUT :字符串包含数字,字符串,点和空格。请注意,e定义了数字之间的分隔符。

e.27.3.90.. .e 3.50 2.30..e2.0.1.2. .50..

输出:我想删除所有空格和那些额外的点,但构成关注点的除外,并在,之前添加e

,e273.90,e3502.30,e2012.50

PS:各种关于regex的帖子太多了。我试图建立一个,但到目前为止似乎没有成功。

  1. 请提出任何有效的一次性regex或想法。
  2. 希望听到此regex与多个replace()
  3. 的效果收益/损失

    以下代码我一直喘气;)..:

          List<string> myList;     
          string s = "";     
          string s2 = "";          
          string str = "e.27.3.90..bl% .e 3.50 2.30. #rp.e2.0.1.2..50..y*x";
          s = Regex.Replace(str, @"\b[a-df-z',\s]+", "");                               
          myList = new List<string>(Regex.Split(s, @"[e]"));
    

2 个答案:

答案 0 :(得分:2)

上次str是您的结果

     string str = "e.27.3.90..bl% .e 3.50 2.30. #rp.e2.0.1.2..50..y*x";
     str = Regex.Replace(str, "[^e^0-9]", "");
     str = Regex.Replace(str, "([0-9]{2}?)(e|$)", ".$1,$2");

     //str = "," + str.Substring(0, str.Length - 1);

答案 1 :(得分:0)

  1. 删除字符串中的所有点。
  2. 将字符串拆分为每个“e”的单独项目。
  3. 对于每个项目,在最后2位数之前添加一个点。
  4. 将项目重新组合成一个字符串,在项目之间放置一个逗号。
  5. 使用标准String方法可以轻松执行这些步骤,但如果需要,可以使用正则表达式。