2012-05-14 66 views
0

我使用Visual Web Ripper来提取网站上产品的名称和价格。C#:从字符串中提取数字,然后将逗号(,)更改为点(。)

,当我从一个表中提取价格谈到在这样的形式:

氪。 129,30

我需要提取129,30,然后将逗号转为点(129.30)。

Visual Web Ripper可以使用脚本来修改提取的内容。它可以使用标准的正则表达式,C#和VB.NET。

在正则表达式选项卡中我发现,

(\d+.)?(\d+)(.\d+)? 

给我129,30,但我不能改变逗号成一个点。

为此,我必须使用C#。它配备了该标准的脚本:

using System; 
using VisualWebRipper.Internal.SimpleHtmlParser; 
using VisualWebRipper; 
public class Script 
{ 
    //See help for a definition of WrContentTransformationArguments. 
    public static string TransformContent(WrContentTransformationArguments args) 
    { 
     try 
     { 
      //Place your transformation code here. 
      //This example just returns the input data 
      return args.Content; 
     } 
     catch(Exception exp) 
     { 
      //Place error handling here 
      args.WriteDebug("Custom script error: " + exp.Message); 
      return "Custom script error"; 
     } 
    } 
} 

如何修改它以提取号码,然后以点代替逗号?

回答

3

这显然是Krona,所以我们应该用瑞典文化信息来翻译它。首先,我们先从输入:

var original = "Kr. 129,30"; 

获取文化:

using System.Globalization; 
var culture = CultureInfo.GetCultureInfo("sv-SE"); 

这种文化期望货币字符串是kr(不区分大小写),但我们有Kr.。因此,让我们对其进行更新:

var format = (NumberFormatInfo)culture.NumberFormat.Clone();  
format.CurrencySymbol = "Kr.";  

而且现在的文化感知解析:

var number = Decimal.Parse(original, NumberStyles.Currency, format); 

现在number包含已被正确解析小数。

+0

谢谢! :)使用'return number.ToString();'我得到“129,30”。现在我怎么得到“129.30”? :) – galskab

+1

它不明显*瑞典克朗,是吗?为什么不是挪威或丹麦文化? – phoog

+0

@galskab'number.ToString(CultureInfo.InvariantCulture)''但真的答案取决于*为什么*你想得到一个带点小数点分隔符的字符串。 – phoog

4

String.Replace是一个选项(text.Replace(",", "."))。

用正确的CultureInfo正确解析数字并使用InvariantCulture重新格式化会更好。

+0

感谢您的回复。我怎么做? :) **我开始在今天第一次看C#** 我可以将文化信息应用于字符串(Kr。129,30)并获得129.30吗?或者我必须先提取数字?我无法弄清楚如何在C#中使用正则表达式,就像在正则表达式中一样。 – galskab

相关问题