正则表达式十进制数字点而不是逗号(.NET) - c#

我正在使用正则表达式来解析来自OCR的文档中的数据,并且正在努力匹配1000s逗号分隔符被误读为点,以及点被误读为逗号的情况!

因此,如果真实值为1234567.89,则打印为1,234,567.89,但被误读为:

1.234,567.89

1,234.567.89

1,234,567,89

等等

我可能可以用C#对此进行排序,但是我确信正则表达式可以做到这一点。有没有可以帮助的正则表达式向导?

更新:

我意识到这是一个非常愚蠢的问题,因为正则表达式可以很直接地抓住所有这些问题,这就是我选择解释比赛的方式。它将在C#中。谢谢-很抱歉浪费您的时间!

我将把Dmitry的答案标记为与我正在寻找的答案接近。谢谢。

参考方案

请注意,由于以下原因存在歧义:

  123,456 // thousand separator 
  123.456 // decimal separator

都是可能的(123456123.456)。但是,我们可以检测到一些情况:

小数点分隔符123.456.789
订单123.456,789错误
错误的数字计数123,45

因此,我们可以建立一个规则:如果分隔符是最后一个,则分隔符可以是小数点后一位,并且不能紧跟三位数字(请参见上面的歧义),所有
其他分隔符应视为千分隔符:

  1?234?567?89
   ^   ^   ^
   |   |   the last one, followed by two digits (not three), thus decimal 
   |   not the last one, thus thousand  
   not the last one, thus thousand

现在让我们实现一个例程

  private static String ClearUp(String value) {
    String[] chunks = value.Split(',', '.');

    // No separators
    if (chunks.Length <= 1)    
      return value; 

    // Let's look at the last chunk
    // definitely decimal separator (e.g. "123,45")
    if (chunks[chunks.Length - 1].Length != 3) 
      return String.Concat(chunks.Take(chunks.Length - 1)) + 
             "." + 
             chunks[chunks.Length - 1]; 

    // may be decimal or thousand
    if (value[value.Length - 4] == ',')    
      return String.Concat(chunks);
    else 
      return String.Concat(chunks.Take(chunks.Length - 1)) + 
             "." + 
             chunks[chunks.Length - 1]; 
  }

现在让我们尝试一些测试:

   String[] data = new String[] {
     // you tests
     "1.234,567.89",
     "1,234.567.89",
     "1,234,567,89",

     // my tests
     "123,456", // "," should be left intact, i.e. thousand separator 
     "123.456", // "." should be left intact, i.e. decimal separator 
   };

   String report = String.Join(Environment.NewLine, data
    .Select(item => String.Format("{0} -> {1}", item, ClearUp(item))));

   Console.Write(report);

结果是

   1.234,567.89 -> 1234567.89
   1,234.567.89 -> 1234567.89
   1,234,567,89 -> 1234567.89
   123,456 -> 123456
   123.456 -> 123.456

jQuery发布不会将数据发布到ASP.NET API控制器 - javascript

我有一次噩梦般的时间通过jquery post将数据发送到ASP.NET Controller。这是JSON.stringify之后的数据:[{"scheduleTaskID":"203","task":"Permit","baselineDate":…

这个json格式正确吗? - c#

我尝试解析时有json数据,返回错误的语法错误,请帮助我发现语法错误。[{"isData":"Yes","Details":"[{"Id":"70","Name":"Test","FileName&#…

.NET C#Webbrowser填充输入,不带ID或类名 - javascript

我需要在网络浏览器中填写一个输入,但这不起作用。我认为必须使用name属性来完成,但是怎么做呢?foreach (HtmlElement login in webBrowser1.Document.GetElementsByTagName("input")) { if (login.GetAttribute("name"…

ddl在服务器中未更新-asp.net - javascript

我在ASP.NET c#上工作。我有一个DropDownList。 (runat =“ server”)在$ {document).ready上,我更新了它的值:$(document).ready(function () { document.getElementById("ddl").value = "abc"; ……

asp.net mvc中的对象数组数据始终为null - javascript

我需要通过json将对象数组发送到asp.net mvc 2,但是我在mvc控制器中没有得到null对象是这样的entries[1].date = "12/22/2014" entries[1].Ref = "0002" entries[1].Credit = "100" entries[2].da…