当前位置: 代码迷 >> ASP.NET >> 【正则】连续相同的数字解决方案
  详细解决方案

【正则】连续相同的数字解决方案

热度:8090   发布时间:2013-02-25 00:00:00.0
【正则】连续相同的数字
例如:
55.0000 替换成55 
55.0600 替换成55.06
55.0678 替换成55.0678 
55.0670 替换成55.0670
55.1000 替换成55.1

C# code
Regex.Replace(s, @"", "", RegexOptions.IgnoreCase);


------解决方案--------------------------------------------------------
帮顶
------解决方案--------------------------------------------------------


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

------解决方案--------------------------------------------------------
C# code
  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                 */
------解决方案--------------------------------------------------------
个人认为,你的问题,就是去除数字多余的0,这用数字好解决这个问题,用正则反而不好解决。

[code=C#]var source = "55.3000";
var result = decimal.Parse(source).ToString("0.0");/code]
------解决方案--------------------------------------------------------
C# code
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    */}
------解决方案--------------------------------------------------------
探讨

个人认为,你的问题,就是去除数字多余的0,这用数字好解决这个问题,用正则反而不好解决。

[code=C#]var source = "55.3000";
var result = decimal.Parse(source).ToString("0.0");/code]

------解决方案--------------------------------------------------------
其实这根本不需要正则,直接这样即可:

"55.1030".TrimEnd(new char[]{'.','0'})
------解决方案--------------------------------------------------------
忘记了,把格式串换成0.#即可
C# code
var source = "55.3000";var result = decimal.Parse(source).ToString("0.#");
------解决方案--------------------------------------------------------

------解决方案--------------------------------------------------------
探讨

C# code

void Main()
{
var list=new List<string>{
"55.0000",
"55.0600",
"55.0678",
"55.0670",
"55.1000"
……
  相关解决方案