例如:
55.0000 替换成55 
55.0600 替换成55.06
55.0678 替换成55.0678 
55.0670 替换成55.0670
55.1000 替换成55.1
Regex.Replace(s, @"", "", RegexOptions.IgnoreCase);

解决方案 »

  1.   

    Regex.Replace(s, @"(?<=\.\d*)(\d)(\1)+", "").TrimEnd('.');
      

  2.   

      string tempStr = File.ReadAllText(@"C:\Documents and Settings\Administrator\桌面\Test.txt", Encoding.GetEncoding("GB2312"));
                    string pattern = @"\d+(.\d+)?";
                    List<float> temp_result = Regex.Matches(tempStr,pattern).Cast<Match>().Select(a=>float.Parse(a.Value)).ToList();
                    /*
                       [0] 55.0 float
                    [1] 55.06 float
                    [2] 55.0678 float
                    [3] 55.067 float
                    [4] 55.1 float                 */
      

  3.   

    个人认为,你的问题,就是去除数字多余的0,这用数字好解决这个问题,用正则反而不好解决。[code=C#]var source = "55.3000";
    var result = decimal.Parse(source).ToString("0.0");/code]
      

  4.   


    void Main()
    {
    var list=new List<string>{ 
    "55.0000",
    "55.0600",
    "55.0678",
    "55.0670",
    "55.1000"
    };
    var reg=new Regex(@"(?<=\.\d*)(\d)(\1)+");
    list.ForEach(l=>Console.WriteLine("{0}:\t{1}",l,reg.Replace(l,"").TrimEnd(new char[]{'.','0'})));
    /*
    55.0000: 55
    55.0600: 55.06
    55.0678: 55.0678
    55.0670: 55.067
    55.1000: 55.1
    */
    }
      

  5.   

    其实这根本不需要正则,直接这样即可:"55.1030".TrimEnd(new char[]{'.','0'})
      

  6.   

    忘记了,把格式串换成0.#即可
    var source = "55.3000";
    var result = decimal.Parse(source).ToString("0.#");
      

  7.   


    你思路对了 有个地方你疏忽了
    我只替换掉0  所以我给你改了下(?<=\.\d*)([0])([0])+
      

  8.   

    哈哈哈 很好 我还以为这个TrimEnd 只会去掉最后一位呢