繁体   English   中英

C#:从字符串中提取数字,然后将逗号(,)更改为点(。)

[英]C#: Extract number out of string, then change comma(,) to dot(.)

我正在使用 Visual Web Ripper 提取网站上产品的名称和价格。

当我从表格中提取价格时,它以如下形式出现:

氪。 129,30

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

Visual Web Ripper 可以使用脚本来修改提取的内容。 它可以使用标准的 Regex、C# 和 VB.NET。

在 Regex 选项卡中,我发现

(\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";
        }
    }
}

如何修改它以提取数字然后用点替换逗号?

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

最好用正确的 CultureInfo 正确解析数字,而不是用 InvariantCulture 重新格式化它。

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

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包含一个已正确解析的小数。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM