[英]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.